java – 将RGBA值转换为十六进制颜色代码

我的应用程序中有一些滑块允许用户更改ARGB颜色,但我需要将这些值转换为十六进制值,如0xff000000,它是纯黑色.

这是我到目前为止:

protected int toHex(Color col) {
    String as = pad(Integer.toHexString(col.getAlpha()));
    String rs = pad(Integer.toHexString(col.getRed()));
    String gs = pad(Integer.toHexString(col.getGreen()));
    String bs = pad(Integer.toHexString(col.getBlue()));
    String hex = "0x" + as + rs + gs + bs;
    return Integer.parseInt(hex,16);
}

private static final String pad(String s) {
    return (s.length() == 1) ? "0" + s : s;
}

但是在获得如下的Integer值后,我得到输入字符串的NumberFormatException:“0xccffffff”:

int color = toHex(new Color(153f,153f,0.80f));

有关如何将其转换为整数的任何想法?谢谢.

最佳答案
Color参数必须在1f和0f之间浮动.所以这是一个有效的颜色:

int color = toHex(new Color(1f,1f,1f));

哪个是白色的.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...