rgb - 如何将 ARGB 唯一地打包为一个整数?

标签 rgb

对于 ARGB 颜色图,我有四个整数值 (0 - 255)。

现在我想制作这四个整数的唯一浮点数或整数。是否可以像下面那样做?

sum  = 4 * 255 + A;
sum += 3 * 255 + R;
sum += 2 * 255 + G;
sum += 1 * 255 + B;

值(value)真的是独一无二的吗?

最佳答案

您正在尝试进行基本转换或类似的操作。无论如何,逻辑就像在基本转换中一样。
4 字节 = 32 位。所以 32 位无符号整数会做得很好。

在这种情况下,您有:

ARGB = A<<24 + R<<16 + G<<8 + B

就像这样:
你有 4 个字节的数据,意思是
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx

其中 X 是 1 或 0 值位。你可以这样映射它们:
AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB

然后你所要做的就是添加它们,但在此之前你需要移动位。你转移了A位向左移动 8*3(超出 RGB 位的限制),然后将 R 移位位乘以 8*2,依此类推。

您最终添加了这些 32 位整数:
AAAAAAAA 00000000 00000000 00000000
00000000 RRRRRRRR 00000000 00000000
00000000 00000000 GGGGGGGG 00000000
00000000 00000000 00000000 BBBBBBBB

哪里A , R , G , B可以是 01 ,并作为一个整体表示 channel 的 8 位值。然后您只需将它们相加,即可获得结果。或作为 DarkDust写道,不要使用 +运算符,而是 | (按位或)运算符,因为在这种特殊情况下它应该更快。

关于rgb - 如何将 ARGB 唯一地打包为一个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7358533/

相关文章:

css - 十六进制颜色 : Numeric representation for "transparent"?

arrays - 您可以为 C 中的二维数组的 struct 中的所有元素赋值吗?

java 如何从大小约为 800x600 的图像中获取平均 RGB 值

python - 生成随机颜色 (RGB)

vba - 为什么 Excel RGB 值向后?

CSS:为什么将十六进制颜色转换为 hsl 然后再转换回十六进制会导致不同的值

objective-c - 改变 RGB 颜色的色调

colors - Raspberry Pi + neopixel : If brightness of RGB LEDs are reduced, 这是否意味着某些颜色无法渲染?

javascript - Three.js:将RGB十进制颜色转换为HEX RGB颜色

.net - 如何在Asp.net中使用HSL