问题几乎在标题内。
我希望在一个字节内容一个颜色而不丢失任何信息,请记住Color.argb实际上是一个int。
Byte colorToSave;
colorToSave = Color.argb(255, 255,0, 100);
据我所知,这几乎是不可能的,但也许有人找到了一个很好的解决方法。
答案 0 :(得分:2)
不可能 - Color.argb的核心是一些按位操作 -
alpha << 24) | (red << 16) | (green << 8) | blue;
因此,如果我们将您的值(255,255,0,100)分解,您可以看到您可以看到精度损失 -
int alpha = 255;
System.out.println(Integer.toBinaryString(alpha));
int red = 255;
System.out.println(Integer.toBinaryString(red));
int green = 0;
System.out.println(Integer.toBinaryString(green));
int blue = 100;
System.out.println(Integer.toBinaryString(blue));
int argb = 255<<24 | 255 << 16 | 0 << 8 | 100;
System.out.println(Integer.toBinaryString(argb));
byte argbbyte = (byte) argb;
System.out.println(Integer.toBinaryString(argbbyte));
制作输出 -
11111111
11111111
0
1100100
11111111111111110000000001100100
1100100
输出的最后一部分是将int转换为一个字节,显示我们返回蓝色的颜色