3 回答
TA贡献1806条经验 获得超8个赞
有很多方法可以实现这一点:
第一个解决方案:
String hex = String.format("#%02x%02x%02x%02x", a, r, g, b);
第二个解决方案:
public int toHex(Color color) {
String alpha = addPadding(Integer.toHexString(color.getAlpha()));
String red = addPadding(Integer.toHexString(color.getRed()));
String green = addPadding(Integer.toHexString(color.getGreen()));
String blue = addPadding(Integer.toHexString(color.getBlue()));
String hex = "0x" + alpha + red + green + blue;
return Integer.parseInt(hex, 16);
}
private static final String addPadding(String s) {
return (s.length() == 1) ? "0" + s : s;
}
第一个解决方案返回十六进制字符串,第二个解决方案返回整数表示的十六进制。
TA贡献1809条经验 获得超8个赞
使用该类java.awt.Color
,您可以获取 RGB 值。
String color2hex(Color color) { return String.format("#%08X", color.getRGB()); }
TA贡献1951条经验 获得超3个赞
使用一些按位运算符快速完成它。这也可用于有效地打包 32 位颜色。
String rgba2hex(int red, int green, int blue, int alpha) {
return String.format("0x%08X", rgba(red, green, blue, alpha));
}
int rgba(int red, int green, int blue, int alpha) {
int rgba = 0;
rgba |= (alpha & 0xff) << 24;
rgba |= (red & 0xff) << 16;
rgba |= (green & 0xff) << 8;
rgba |= (blue & 0xff);
return rgba;
}
// reverse it
int[] rgba(int rgba) {
int[] color = new int[4];
color[4] = (rgba >> 24) & 0xff; // alpha
color[1] = (rgba >> 16) & 0xff; // red
color[2] = (rgba >> 8) & 0xff; // green
color[3] = rgba & 0xff; // blue
return color;
}
添加回答
举报