我正在开发一个 Java EE 应用程序,其中我有一个“项目”表,其中包含一些产品,以及一个用于设置其颜色的字段。
问题:用户从包含 16 种或可能 128 种颜色的调色板中选择一种颜色。我将颜色存储为一个字节(8 位颜色),并且我需要能够将 RGB 颜色/整数转换为其 8 位等效值,反之亦然,例如:
White: 0xFF(0b 111 111 11) to -1 or (255,255,255)
Red: 0x10(0b 111 000 00) to -65536 or (255, 0, 0 )
到目前为止我已经尝试过:
void setColor(Color color){
short sColor = (color.getRGB() >> 16) & 0xFF) >> 8
| (color.getRGB() >> 8) & 0xFF) >> 8
| (color.getRGB() >> 0) & 0xFF) >> 8;
}
Color getColor(short sColor){
Color rgb = new Color(
/*red:*/ (sColor & 0xF) << 16,
/*gree:*/ (sColor & 0xF) << 8,
/*blue*/ (sColor & 0xF) << 0));
}
/* or */
Color getColor(short sColor){
Color rgb = new Color((sColor << 8) + sColor));
}
当我遍历 0 到 255 的颜色值时,我得到一个单一的色调变化。