我有一个ARGB颜色映射的四个整数值(0 – 255).
现在我想创建这四个整数的唯一浮点数或整数.有可能像下面这样做吗?
sum = 4 * 255 + A; sum += 3 * 255 + R; sum += 2 * 255 + G; sum += 1 * 255 + B;
这个价值真的很独特吗?
解决方法
您正在尝试进行基本转换或类似的事情.无论如何,逻辑就像在基本转换中一样.
4个字节= 32位.所以32位无符号整数会很好.
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所写,不是使用运算符,而是使用| (按位或)运算符,因为在这种特殊情况下它应该更快.