Альтернатива BitConverter.ToInt32 - PullRequest
2 голосов
/ 28 марта 2010

Я использую BitConverter.ToInt32, чтобы упаковать 3 byte значения в int, например так:

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

Есть ли более быстрый способ сделать это, не связанный с созданиемнового int каждый раз?Получить байты из int просто:

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

Есть ли простой способ обратить этот процесс вспять и использовать сдвиг битов, чтобы записать байты RGB обратно поверх существующего int?

Ответы [ 2 ]

8 голосов
/ 28 марта 2010
int i = (B << 0) | (G << 8) | (R << 16);
4 голосов
/ 28 марта 2010

Вы должны рассмотреть Цветовая структура . Он имеет свойства R, G и B, а также методы FromArgb () и ToArgb ().

...