2010-01-28 32 views
7

我有一个RGB颜色存储为uint。我可以使用这个表达式中的RGB值使用按位左移和按位或运算符来创建此类表达式:将RGB uint分解为其单独的R G B分量

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

我想做相反的事情。我有最后一个数字,我想要r,g和b值。有谁知道如何做到这一点?

+0

感谢大家对你的快速解答。所有3个都是正确的。我猜你们都在同一时间打字。 – 2010-01-28 23:46:58

回答

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

像这样:

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

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

5

您可以使用Shift键,然后将&运营商屏蔽掉不需要的位:

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

或者:

b = color & 255; 
color >>= 8; 
g = color & 255; 
r = color >> 8; 
相关问题