这是将String Hex转换为十进制的方法:

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;
}


真的希望有人可以看到解决这个问题的方法=)

最佳答案

唯一有效的十六进制数字是0-9和a-f(或A-F)。 #不是有效的十六进制数字。

关于java - 从十六进制转换为十进制时,为什么会出现NumberFormatException,如何防止呢? -Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14657613/

10-13 03:00