Alternativa ao bitconverter.toint32
-
22-09-2019 - |
Pergunta
estou a usar BitConverter.ToInt32
Para embalar 3 byte
valores em um int
, igual a:
byte R = 0;
byte G = 0;
byte B = 0;
int i = BitConverter.ToInt32(new byte[] { R, G, B, 0 }, 0);
Existe uma maneira mais rápida de fazer isso que não envolve a criação de um novo int
cada vez? Tirando os bytes de um int
é fácil:
int i = 34234;
byte B = (byte)(i >> 0);
byte G = (byte)(i >> 8);
byte R = (byte)(i >> 16);
Existe uma maneira simples de reverter esse processo e usar a mudança de bits para escrever os bytes RGB de volta em um int
?
Solução
int i = (B << 0) | (G << 8) | (R << 16);
Outras dicas
Você deve considerar o Estrutura de cores. Possui propriedades R, G e B e métodos FromArgB () e Toargb ().
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow