3

我正在为非常简单的任务而苦苦挣扎(嗯,我想是的)。我有byte[4]表示颜色值的数组,例如byte[0] = alphabyte [1] = red。如何将此字节数组转换为实际的颜色对象?感谢您的回答。

4

1 回答 1

14

Java 中的字节是有符号的,因此正数部分只能保存值直到 127,RGB 上升到 255。所以你必须对此进行补偿:

byte b = (byte) 130;
int i = b & 0xFF;
System.out.println(i); //Prints 130 again

然后可以将 int 传递给 Color 构造函数。

编辑:完整示例:

byte[] values = new byte[] {(byte) 130, (byte) 150, (byte) 200, (byte) 200};
Color color = Color.argb(values[0] & 0xFF, values[1] & 0xFF, values[2] & 0xFF, values[3] & 0xFF);
System.out.println(color + " alpha " + color.getAlpha());
于 2013-07-11T21:20:55.573 回答