2

我正在阅读一本 android 游戏开发书,并且遇到了 RGB 三元组: (31, 31, 45) 使用 16 位(红色为 5 位,绿色为 6 位,蓝色为 5 位)。

我对三元组中的最后一个数字有点困惑:45。如果最后一个坐标是蓝色的,而蓝色只有 5 位,那么最后一个坐标点怎么可能有 45?蓝色的最高数字不应该是 31 吗?

顺便说一句,据说这个三元组创造了粉红色。

有人可以帮助消除混乱吗?

谢谢!

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

4

2 回答 2

2

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

可能是测试人员/编辑人员刚刚漏掉的东西。

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

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

所以任何额外的位都会被屏蔽掉。

于 2012-09-03T20:13:13.137 回答
0

十六进制的 FC0D 是

1111110000001101 二进制

所以

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

于 2012-09-03T20:13:42.773 回答