以16位编码RGB颜色

时间:2012-09-03 20:03:25

标签: colors bits

我正在阅读一本安卓游戏开发书,我遇到了RGB三元组:(31,31,45)使用16位(红色获得5位,绿色获得6位,蓝色获得5位)。 / p>

我对三元组中的最后一个数字感到有点困惑:45。如果最后一个坐标是蓝色,蓝色只有5位,那么如何在最后一个坐标点中得到45?蓝色可能不是最高的数字是31?

据推测,这个三联体会产生粉红色。

有人可以帮助消除困惑吗?

谢谢!

编辑:如果它有助于颜色的十六进制是0xFC0D

2 个答案:

答案 0 :(得分:2)

您的十六进制代码显示会发生什么:45 = 0x2d,但十六进制代码在低位只有0xd,基本上高位位被截断,因为您正确,最高可能值为0x1F。

可能是测试人员/编辑只是滑倒了。

RGB代码很可能是这样构建的:

RGB(r,g,b)
{
    code = (r & 0x1f) << 11;
    code |= (g & 0x3f) << 5;
    code |= (b & 0x1f) << 0;
}

因此,任何额外的位都被屏蔽掉了。

答案 1 :(得分:0)

十六进制的FC0D是

二进制

1111110000001101

所以

R = b11111 = 31 G = b100000 = 32 B = b01101 = 13