2011-06-29 136 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); 

希望有所幫助。