Вопрос

я использую 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?

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top