2011-06-29 102 views
0

我四处寻找如何将一些颜色代码转换为纯RGB(255,255,255)。我有这样的一些像颜色转换

5953244 Yellow 
12868826 Pink 
12356730 Pale Blue 
5758835 Green 

我真的不知道如何利用这个号码,并将其加工成普通RGB或什么样的RGB类型都是。

+0

我愿意接受所有的答案,因为它们是有效的,但我只能一个:( – DigitalVanilla

回答

1

一个int是大到足以容纳一个ARGB HTML颜色代码值或任何顺序(RGBA,BGR),并且int值本身不如其包含的单个字节重要。由于通道位于不同的字节,因此不同的颜色空间需要不同的按位操作。以下是适用于RGBARGB的示例。

#define R(rgb) ((rgb) >> 16 & 0xFF) 
#define G(rgb) ((rgb) >> 8 & 0xFF) 
#define B(rgb) ((rgb) & 0xFF) 

int main(int argc, char *argv[]) 
{ 
    int pale_blue = 5953244; 
    printf("\nR: 0x%02X G: 0x%02X B: 0x%02X\nR: %03d G: %03d B: %03d", 
     R(pale_blue), G(pale_blue), B(pale_blue), 
     R(pale_blue), G(pale_blue), B(pale_blue)); 
} 

输出:

R:0x5A   G:0xD6   B:的0xDC
R:090       G:214       B:220

+0

我无法抗拒!说:非常好! – sidyll

+0

惊人的!谢谢 – DigitalVanilla

+0

@ nathan-day它很奇怪,它适用于绿色和粉红色(不是真的粉红色,但非常接近),但其他两个是错误的。淡蓝变成褐色,黄变成纯青色。我真的不知道什么样的int color system,这是主要的问题。这来自Windows上的XML。我没有其他线索:( – DigitalVanilla

1

这取决于这些都是什么样的颜色代码,如果他们是在正常情况下显示为十六进制,那么你可以做这样的事情

red = (c>>16)&0xff; 
green = (c>>8)&0xff; 
blue = c&0xff; 
+0

超出我的预期,TNX :) – DigitalVanilla

2

只需在您的头文件中包含以下行:

#define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1]; 

然后你可以从任何地方像这样称呼它:

UIColor *myBrightBlueColour = RGB(0,186,255); 

希望有所帮助。