存储到“UInt”中时整数文字溢出

Posted

技术标签:

【中文标题】存储到“UInt”中时整数文字溢出【英文标题】:Integer literal overflows when stored into 'UInt' 【发布时间】:2015-04-23 06:33:10 【问题描述】:

将 xCode 更新到 6.3 和/或 Swift 1.2 并突然收到此错误

整数字面量在存储到 'UInt'* 时溢出

这是我的代码:

mybuttonOutLet.setTitleColor(UIColorFromRGB(0x100114151), forState: UIControlState.Normal)

这是我的 UIColorFromRGB() 方法

func UIColorFromRGB(rgbValue: UInt) -> UIColor 
    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )

【问题讨论】:

太奇怪了,我试过你的代码,它工作正常,你有没有尝试清理项目和/或删除派生数据? 问题已经在下面解释过了,但是你期望的结果是什么颜色? s23.postimg.org/ecaroi4mf/image.png图片中的白色 我认为您使用十进制 RBG 值和连接整数并将它们用作十六进制文字是错误的。该颜色的 Hex RBG 数字类似于0x6D79DA @QadirHussain White 是 0xFFFFFF。你可以使用UIColor.whiteColor() 【参考方案1】:

0x100114151。好的,这是九个十六进制数字。假设:UInt 在您的平台上是 32 位。这可以计算出八个十六进制数字。

换句话说,您正在为一个只能保存 32 位的变量分配一个 >32 位的值。

【讨论】:

以上是关于存储到“UInt”中时整数文字溢出的主要内容,如果未能解决你的问题,请参考以下文章

整数文字 '115000159351' 在存储到 'Int' 时溢出,但在一个项目中工作正常,但在另一个项目中工作正常 - Swift

为什么在将大于i32的数字存储到变量中时,我没有得到文字超出范围错误?

Django ORM 能否以可靠的与后端无关的方式存储无符号 64 位整数(又名 ulong64 或 uint64)?

Solidity知识点集 — 溢出和下溢

Redshift 复制命令错误“溢出,列类型:整数”

将无符号整数存储在指针中