0

这是我将字符串十六进制转换为十进制的方法:

private int fromHexToPercent(String hex){
    int decimal = Integer.parseInt(hex, 16);
    return decimal;
}

当我在这些值上调用它时:#ffe87e, #ffc6bb, #528b7a, #9b81ff, #7d6a32, #000c40除其他外,我在这一行得到以下异常:

   int decimal = Integer.parseInt(hex, 16);

错误:

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:481)

这是我从 rgb 转换为 hex 的方法,我觉得 Java 在这一行有问题:hex = "0" + hex;。但它需要在那里才能获得正确的十六进制代码。

    public static String toHex(int r, int g, int b) {
return "#" + toBrowserHexValue(r) + toBrowserHexValue(g) +  toBrowserHexValue(b);
}

private static String toHexValue(int number) {
    String hex = Integer.toHexString(number & 0xff);
    while (hex.length() < 2) {
        hex = "0" + hex;
    }
    return hex;
}

真的希望有人能看到这个问题的解决方案=)

4

3 回答 3

2

唯一有效的十六进制数字是 0-9 和 af(或 AF)。#不是有效的十六进制数字。

于 2013-02-02T01:33:01.683 回答
0

只需#从十六进制值中删除。

于 2013-02-02T01:20:33.867 回答
0

您应该改为使用不以未知字符开头的数字。比如#0x

于 2013-02-02T01:21:33.973 回答