15位彩色组件,位移位

15Bit Color Components, Bit shifting

本文关键字:组件 彩色 15位      更新时间:2023-10-16

好的比特移位对我来说仍然有点奇怪。

我有一个16位的值。前15位是颜色,最后一位是alpha。

我已经用24和32位的颜色做了这件事,没有问题,因为它们是很好的字节大小,但我似乎无法用15/16位来处理。

这是我过去所做的,使用24/32位颜色

(m_colorValue >> RED_CHANNEL) & 0xFF;

我正试图把这个值分成4个值。3个5位颜色值和1个阿尔法值。我不知道该用什么口罩。

谢谢。

如果我理解正确:

red = (packed >> 0) & 0x1F;
green = (packed >> 5) & 0x1F;
blue = (packed >> 10) & 0x1F;
alpha = (packed >> 15) & 0x01;

packed最好是unsigned,我可能要去接订单了。

使用位移位。

ushort s;
ushort b= s&0x1F // first five bits
ushort g= (s>>5)&0x1F // second five bits

等等。。。

你的问题很模糊,但如果你试图从RGB1555中提取单独的颜色成分,这应该可以做到:

unsigned short color;
const unsigned int 
    a = color & 0x8000, 
    r = color & 0x7C00, 
    g = color & 0x03E0, 
    b = color & 0x1F;