我正在尝试用 Java 制作编码器/解码器,这样我就可以以十六进制格式存储 RGB 值。我有这样的编码器:
System.out.println("#" + Integer.toHexString(label.getColor().getRed())
+ Integer.toHexString(label.getColor().getGreen())
+ Integer.toHexString(label.getColor().getBlue()));
和这样的解码器:
System.out.println(decodeColor("#"
+ Integer.toHexString(label.getColor().getRed())
+ Integer.toHexString(label.getColor().getGreen())
+ Integer.toHexString(label.getColor().getBlue())));
功能的实现decodeColor()
是:
private RGB decodeColor(String attribute) {
Integer intval = Integer.decode(attribute);
int i = intval.intValue();
return new RGB((i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);
}
当我运行测试程序时,我得到这个输出:
- 初始值是新的 RGB(15, 255, 45)
<\label ... color="#fff2d">...</label>
RGB {15, 255, 45}
- 初始值为 RGB(15, 0, 45)
<\label ... color="#f02d">...</label>
RGB {0, 240, 45}
因此,在某些情况下它会返回正确的结果,但在其他情况下则完全搞砸了。这是为什么?