Разделение RGB uint в его отдельный R G B компоненты

Мне сохранили цвет RGB как uint. Я могу создать это из значений RGB с помощью поразрядного, оставленного и поразрядного или оператор в выражении как это:

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

Я хочу сделать противоположное. У меня есть заключительное число, и я хочу r, g и значения b. Кто-либо знает, как сделать это?

7
задан Paul R 17 April 2012 в 09:15
поделиться

3 ответа

r = (colour >> 16) & 0xff;
g = (colour >> 8) & 0xff;
b = colour & 0xff;
15
ответ дан 6 December 2019 в 06:36
поделиться

Вы используете Shift, а затем и оператор для маскировки нежелательных битов:

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

В качестве альтернативы:

b = color & 255;
color >>= 8;
g = color & 255;
r = color >> 8;
5
ответ дан 6 December 2019 в 06:36
поделиться

Что-то вроде этого:

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

при условии 8-битных компонентных значений. Маски побитовые и шестнадцатеричные 0xFF выбирают только 8-битные для каждого компонента.

7
ответ дан 6 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: