将RGB uint拆分为单独的R G B组件

时间:2010-01-28 23:35:26

标签: language-agnostic colors bit-manipulation

我将RGB颜色存储为uint。我可以使用按位左和按位或运算符在RGB值中创建这个,如下所示:

colour = r<<16 | g<<8 | b;

我想做相反的事情。我有最终的数字,我想要r,g和b值。有谁知道怎么做?

3 个答案:

答案 0 :(得分:15)

r = (colour >> 16) & 0xff;
g = (colour >> 8) & 0xff;
b = colour & 0xff;

答案 1 :(得分:7)

这样的事情:

r = ( colour >> 16 ) & 0xFF;
g = ( colour >> 8 )  & 0xFF;
b = colour & 0xFF;

假设8位组件值。按位和十六进制0xFF掩码仅为每个组件选择8位。

答案 2 :(得分:5)

你使用shift,然后&amp;运算符掩盖不需要的位:

r = color >> 16;
g = (color >> 8) & 255;
b = color & 255;

可替换地:

b = color & 255;
color >>= 8;
g = color & 255;
r = color >> 8;