2010-01-28 91 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; 
相關問題