Мне сохранили цвет RGB как uint. Я могу создать это из значений RGB с помощью поразрядного, оставленного и поразрядного или оператор в выражении как это:
colour = r<<16 | g<<8 | b;
Я хочу сделать противоположное. У меня есть заключительное число, и я хочу r, g и значения b. Кто-либо знает, как сделать это?
r = (colour >> 16) & 0xff;
g = (colour >> 8) & 0xff;
b = colour & 0xff;
Вы используете Shift, а затем и оператор для маскировки нежелательных битов:
r = color >> 16;
g = (color >> 8) & 255;
b = color & 255;
В качестве альтернативы:
b = color & 255;
color >>= 8;
g = color & 255;
r = color >> 8;
Что-то вроде этого:
r = ( colour >> 16 ) & 0xFF;
g = ( colour >> 8 ) & 0xFF;
b = colour & 0xFF;
при условии 8-битных компонентных значений. Маски побитовые и шестнадцатеричные 0xFF
выбирают только 8-битные для каждого компонента.