1

我想用0xFF0000(RGB) 之类的颜色制作,一种带有 FF alpha 的 RGBA 颜色,例如0xFF0000FF. 我认为这将是一些带有位的东西。

提前致谢, 卡珀

4

1 回答 1

4
uint32_t rgb=0xFF0000;
uint32_t rgba = (rgb << 8) | 0xFF;

说明: (rgb << 8)将 rgb 值左移 8 位。这意味着它恰好向左移动一个字节,因此例如0x12345678将更改为0x34567800. 前两位数字在移位后不适合 32 位,因此它们被删除。其他所有东西都向左移动,然后在低位添加新的零。

下一个运算符是按位的or。它是一个 or 应用于每一位,所以0x34567800 | 0xFF会导致0x345678FF

(感谢@Gajet 的解释)

于 2011-07-12T22:50:27.147 回答