我正在阅读一本 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;
}
因此任何额外的位都会被屏蔽掉。
关于colors - 以 16 位编码 RGB 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12253425/