Objective c Can';由于int表示,无法将十六进制颜色转换为rgb

Objective c Can';由于int表示,无法将十六进制颜色转换为rgb,objective-c,colors,hex,converter,uicolor,Objective C,Colors,Hex,Converter,Uicolor,我正在从网上下载十六进制颜色,当我试图将其转换为RGB时,它不起作用 我正在使用这个函数: #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/

我正在从网上下载十六进制颜色,当我试图将其转换为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,因此函数无法识别颜色。例如,090在int-its-90中也是如此。

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

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

但是,仔细看,您会发现,对于3位数字表示,字符是双倍的

因此,在这种情况下,颜色实际上是#33BB99: 红色=3*16+3=51 绿色=11*16+11=187 蓝色=8*16+8=136 α=255

因此颜色“#3B9”将变成: [51/255.0187/255.0136/255.0,1.0]

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


希望这有帮助,我希望我的计算是正确的。我不擅长objective-C,因此我不会提供代码,但编写自己的函数应该很容易,尽管我敢打赌该函数已经存在。

这对我很有用。你只需给函数十六进制代码,谢谢。工作完美。