2010-01-28 18 views
7

Tengo un color RGB almacenado como un uint. Puedo crear esto desde los valores RGB utilizando la izquierda en modo bit y bit a bit o el operador en una expresión como esta:División de un RGB uint en sus componentes separados R G B

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

quiero hacer lo contrario. Tengo el número final y quiero los valores r, g y b. ¿Alguien sabe como hacer esto?

+0

Gracias a todos por sus respuestas rápidas. Los 3 son correctos. Supongo que estabas escribiendo todo al mismo tiempo. –

Respuesta

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

Algo como esto:

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

Suponiendo valores de los componentes de 8 bits. Las máscaras 0xFF bit a bit y hexagonal seleccionan solo los 8 bits para cada componente.

5

Usted usar el desplazamiento, y luego el operador & para enmascarar los bits no deseados:

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

alternativa:

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