我正在阅读一本 android 游戏开发书,并且遇到了 RGB 三元组: (31, 31, 45) 使用 16 位(红色为 5 位,绿色为 6 位,蓝色为 5 位)。
我对三元组中的最后一个数字有点困惑:45。如果最后一个坐标是蓝色的,而蓝色只有 5 位,那么最后一个坐标点怎么可能有 45?蓝色的最高数字不应该是 31 吗?
顺便说一句,据说这个三元组创造了粉红色。
有人可以帮助消除混乱吗?
谢谢!
编辑:如果它有助于颜色的十六进制是 0xFC0D
您的十六进制代码显示发生了什么:45 = 0x2d,但十六进制代码的低位只有 0xd,基本上高位被切掉,因为您是正确的,最高可能值为 0x1F。
可能是测试人员/编辑人员刚刚漏掉的东西。
RGB 代码很可能是这样构建的:
RGB(r,g,b)
{
code = (r & 0x1f) << 11;
code |= (g & 0x3f) << 5;
code |= (b & 0x1f) << 0;
}
所以任何额外的位都会被屏蔽掉。
十六进制的 FC0D 是
1111110000001101 二进制
所以
R=b11111=31 G=b100000=32 B=b01101=13