uint32_t rgb=0xFF0000;
uint32_t rgba = (rgb << 8) | 0xFF;
说明: (rgb << 8)
将 rgb 值左移 8 位。这意味着它恰好向左移动一个字节,因此例如0x12345678
将更改为0x34567800
. 前两位数字在移位后不适合 32 位,因此它们被删除。其他所有东西都向左移动,然后在低位添加新的零。
下一个运算符是按位的or
。它是一个 or 应用于每一位,所以0x34567800 | 0xFF
会导致0x345678FF
(感谢@Gajet 的解释)