RGBA Hex от RGB Hex - PullRequest
       80

RGBA Hex от RGB Hex

1 голос
/ 13 июля 2011

Я хочу сделать из цвета, как 0xFF0000 (RGB), цвет RGBA с FF альфа, как 0xFF0000FF.Думаю, это будет что-то с битами.

Заранее спасибо, Kacper

1 Ответ

4 голосов
/ 13 июля 2011
uint32_t rgb=0xFF0000;
uint32_t rgba = (rgb << 8) | 0xFF;

Объяснение: (rgb << 8) сдвигает значение rgb на 8 бит влево. это означает, что он перемещается ровно на один байт влево, например, 0x12345678 изменится на 0x34567800. Две верхние цифры после сдвига не поместятся в 32 бита, поэтому они удаляются. Все остальное сдвигается влево, а затем в нижнюю позицию добавляются новые нули.

Следующий оператор побитовый or. это или применяется к каждому биту, поэтому 0x34567800 | 0xFF приведет к 0x345678FF

(спасибо @Gajet за объяснение)

...