Pregunta

Estoy usando BitConverter.ToInt32 para empacar 3 valores byte en un int, así:

byte R = 0;
byte G = 0;
byte B = 0;
int i = BitConverter.ToInt32(new byte[] { R, G, B, 0 }, 0);

¿Hay una manera más rápida de hacer esto que no implica la creación de un nuevo int cada vez? Obtención de los bytes de un int es fácil:

int i = 34234;
byte B = (byte)(i >> 0);
byte G = (byte)(i >> 8);
byte R = (byte)(i >> 16);

¿Hay una forma sencilla de revertir este proceso y el uso de desplazamiento de bits a escribir el RGB bytes hacia atrás sobre un int existente?

¿Fue útil?

Solución

int i = (B << 0) | (G << 8) | (R << 16);

Otros consejos

Se debe tener en cuenta el color estructura . Tiene R, G y B y propiedades FromArgb () y ToArgb () métodos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top