【发布时间】:2013-09-25 16:45:47
【问题描述】:
我正在尝试用 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)
...
RGB {15、255、45}
- 初始值为 RGB(15, 0, 45)
...
RGB {0、240、45}
因此,在某些情况下它会返回正确的结果,但在其他情况下则完全搞砸了。这是为什么呢?
【问题讨论】:
-
This 可能会有所帮助。另请参阅右侧的相关问题。
标签: java hex rgb data-conversion