如何将ARGB打包成一个唯一的整数?

前端之家收集整理的这篇文章主要介绍了如何将ARGB打包成一个唯一的整数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ARGB颜色映射的四个整数值(0 – 255).

现在我想创建这四个整数的唯一浮点数或整数.有可能像下面这样做吗?

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

这个价值真的很独特吗?

解决方法

您正在尝试进行基本转换或类似的事情.无论如何,逻辑就像在基本转换中一样.
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(超出R,G和B位的限制),然后将R位移位8 * 2,依此类推.

您最终添加这些32位整数:

AAAAAAAA 00000000 00000000 00000000
00000000 RRRRRRRR 00000000 00000000
00000000 00000000 GGGGGGGG 00000000
00000000 00000000 00000000 BBBBBBBB

其中A,R,G,B可以是0或1,并且整体表示通道的8位值.然后你只需添加它们,然后获得结果.或者如DarkDust所写,不是使用运算符,而是使用| (按位或)运算符,因为在这种特殊情况下它应该更快.

猜你在找的CSS相关文章