2013-03-28 210 views
-3

我有以下颜色值 - 0xFFFF40,0xFFFF20,0xff5099。如何将颜色值转换为RGB

我想将这些C++代码转换为RGB值,我该如何去做这件事?

感谢

编辑: 我基本上会想这些值在3个不同的签名短裤存储:

unsigned short red; 
unsigned short green; 
unsigned short blue; 
+0

颜色值'0xff5099'代表'ff'的红色值,'50'的绿色值和'99'的蓝色值,您还需要什么? – Oswald

+0

能否详细说明在转换完成后如何存储它们以及如何将它们按原样存储? – 2to1mux

+0

嗯...我不知道这件事。我可以问,'0x'是什么意思? – Danny

回答

13

你可以得到每个通道的通过屏蔽出来单独:

// Original color 
std::size_t color = 0xFFFF40; 
std::size_t red = (color & 0xff0000) >> 16; 
std::size_t green = (color & 0x00ff00) >> 8; 
std::size_t blue = (color & 0x0000ff); 
+2

你可能也想改变它们。 –

+0

啊,当然!感谢您的支持! –

+1

移位是位(16/8)不是半字节(4/2)。 ;) – syam