Java 在字节内托管Color.argb(a、r、g、b)而不丢失信息

Java 在字节内托管Color.argb(a、r、g、b)而不丢失信息,java,byte,Java,Byte,这个问题几乎就在标题里面 我想在不丢失任何信息的情况下,在一个字节内托管一种颜色,记住color.argb实际上是一个int Byte colorToSave; colorToSave = Color.argb(255, 255,0, 100); 据我所知,这几乎是不可能的,但也许有人找到了一个很好的解决办法。不,这是不可能的-Color.argb的核心是一些按位操作- alpha << 24) | (red << 16) | (green << 8) |

这个问题几乎就在标题里面

我想在不丢失任何信息的情况下,在一个字节内托管一种颜色,记住color.argb实际上是一个int

Byte colorToSave;

colorToSave = Color.argb(255, 255,0, 100);

据我所知,这几乎是不可能的,但也许有人找到了一个很好的解决办法。

不,这是不可能的-Color.argb的核心是一些按位操作-

alpha << 24) | (red << 16) | (green << 8) | blue;

输出的最后一部分是将int转换为一个字节,显示返回蓝色的颜色。不要混淆字节和字节。2.你不能在8位中存储32位而不丢失信息。3.为什么不能使用int呢?最终我会使用int,但这只是为了优化,没有别的。总之,总的来说,这是不可能的,对吗?是的,仅仅为了优化而将int压缩成字节是没有意义的。我发送值,所以重点是发送尽可能少的信息。
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