Java 如何将带符号整数解码为其RGB值

Java 如何将带符号整数解码为其RGB值,java,android,Java,Android,我有一个数字代表Android中的一种颜色(据我所知,它被称为有符号整数,因为Java没有无符号整数?) 我相信这对应于十六进制的颜色,它看起来是一个透明度设置为0%的黄色 0xffffff00 我尝试将-256转换为其RGB值,并将字节加载到数组中 byteArr[0] = (byte) ((color >> 16) & 0xFF); byteArr[1] = (byte) ((color >> 8) & 0xFF); byteArr[2] =

我有一个数字代表Android中的一种颜色(据我所知,它被称为有符号整数,因为Java没有无符号整数?)

我相信这对应于十六进制的颜色,它看起来是一个透明度设置为0%的黄色

0xffffff00
我尝试将
-256
转换为其RGB值,并将字节加载到数组中

byteArr[0] = (byte) ((color >> 16) & 0xFF); 
byteArr[1] = (byte) ((color >>  8) & 0xFF); 
byteArr[2] = (byte) ((color >>  0) & 0xFF);
当我打印得到的字节的字符串值时

String.valueOf(byteArr[0]); // prints -1
String.valueOf(byteArr[1]); // prints -1
String.valueOf(byteArr[2]); // prints  0
我希望RGB值为黄色

String.valueOf(byteArr[0]); // should print 255
String.valueOf(byteArr[1]); // should print 255
String.valueOf(byteArr[2]); // should print 0
有谁能帮我把RGB值转换成
-256
的实际值,并帮我了解发生了什么


谢谢

您可以像这样对RGB颜色进行编码和解码

 // sRGB
 Color opaqueRed = Color.valueOf(0xffff0000); // from a color int
 Color translucentRed = Color.valueOf(1.0f, 0.0f, 0.0f, 0.5f);

有关更多详细信息,请参见。

字节也有符号…为什么
String.valueOf((byte)Color.blue(-11922228))
打印
-52
其中
String.valueOf((byte)Color.red(-11922228))
打印
74
?是不是
74
红色分量没有签名,而
-52
是有签名的蓝色分量?如何获取未签名的蓝色组件?
 // sRGB
 Color opaqueRed = Color.valueOf(0xffff0000); // from a color int
 Color translucentRed = Color.valueOf(1.0f, 0.0f, 0.0f, 0.5f);