存储到“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”中时整数文字溢出的主要内容,如果未能解决你的问题,请参考以下文章