colors - 以 16 位编码 RGB 颜色

标签 colors bit

我正在阅读一本 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/

相关文章:

c# - 带颜色的开关/外壳

r - 如何在ggplot中手动设置geom_bar填充颜色

java - 如何在libgdx中设置背景颜色?

javascript - 如何在 html 和 javascript 中同时切换文本和颜色?

C# - 如何在列表中添加所有 system.drawing.color 项目?

java - 检查整数中是否只设置了一个位(无论其位置如何)

c - n 位设置为 1 的第 n 个最小数

c++ - 我不明白为什么我在按位或短字符和字符时得到这个结果

c++ - 将整数转换为位

mysql - SQL 位操作,将倒数第二位更改为 0