【问题标题】:Can't convert hex color to rgb because of int representation由于 int 表示,无法将十六进制颜色转换为 rgb
【发布时间】:2013-05-15 21:57:36
【问题描述】:

我正在从网上下载十六进制颜色,当我尝试将其转换为 RGB 时,它不起作用。

我正在使用这个功能:

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

我认为问题在于,当我从 Internet 获取值(例如 000)时,当我将其转换为 int 以便可以将其作为参数传递给上面的函数时,int 表示为 0,因此函数无法识别颜色。例如,当 int 为 90 时,与 090 相同。

【问题讨论】:

标签: objective-c colors hex converter uicolor


【解决方案1】:

您需要将十六进制颜色视为一个字符串,并分别处理每个组件。

颜色#3B9 有数字“3”“B”和“9”

但是,查看here,您会看到对于 3 位表示,字符是双倍的。

所以在这种情况下,颜色实际上是#33BB99: 红色 = 3*16+3 = 51 绿色 = 11*16+11 = 187 蓝色 = 8*16+8 = 136 阿尔法 = 255

所以颜色“#3B9”会变成: [51/255.0, 187/255.0, 136/255.0, 1.0]

因此,您应该首先确定字符串是否以压缩方式表示颜色,并在必要时复制数字。然后将数字对转换为十进制值,然后转换为 UIColor。

希望对您有所帮助,我希望我的计算是正确的。我不擅长 Objective-C,所以我不会提供代码,但是编写你自己的函数应该很容易,尽管我敢打赌这个函数已经存在于某个地方。

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 2014-10-02
    • 2012-11-01
    • 2022-08-10
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多