2010-01-28 14 views
7

मेरे पास एक आरजीबी रंग एक यूंट के रूप में संग्रहीत है। मैं इस तरह एक अभिव्यक्ति में आरजीबी और का उपयोग कर बिटवाइज़ छोड़ दिया मूल्यों बिटवाइज़ या ऑपरेटर से बना सकते हैं:आरजीबी को अपने अलग आर जी बी घटकों में विभाजित करना

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

मैं विपरीत करना चाहते हैं। मेरे पास अंतिम संख्या है और मैं आर, जी और बी मान चाहता हूं। क्या किसी को भी यह करना आता है?

+0

धन्यवाद अपने त्वरित जवाब के लिए हर किसी को। सभी 3 सही हैं। मुझे लगता है कि आप सभी एक ही समय में टाइप कर रहे थे। –

उत्तर

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-बिट घटक मूल्यों मान लिया जाये। Bitwise-hex 0xFF मास्क प्रत्येक घटक के लिए केवल 8-बिट्स चुनते हैं।

5

आप बदलाव का उपयोग करें, और अवांछित बिट्स तो & ऑपरेटर बाहर नकाब:

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

वैकल्पिक रूप से:

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