我试图像这样转换为int,但是我遇到了一个例外。

    String strHexNumber = "0x1";
    int decimalNumber = Integer.parseInt(strHexNumber, 16);
    Exception in thread "main" java.lang.NumberFormatException: For input string: "0x1"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)


如果有人可以修复它将是一个很大的帮助。

谢谢。

最佳答案

当然-如果要使用parseInt,则需要删除“ 0x”部分:

int parsed = Integer.parseInt("100", 16);
System.out.println(parsed); // 256


如果您知道您的值将以“ 0x”开头,则可以使用:

String prefixStripped = hexNumber.substring(2);


否则,只需对其进行测试:

number = number.startsWith("0x") ? number.substring(2) : number;


请注意,您还应该考虑负数也将如何表示。

编辑:亚当使用decode的解决方案肯定会起作用,但是如果您已经知道基数,那么IMO显然要明确声明它而不是对其进行推断-特别是如果它会使“ 035”被视为八进制的人感到惊讶,因为例。当然,每种方法在不同的时间都适用,因此有必要了解这两种方法。选择最干净,最清楚地处理您的特定情况的人。

关于java - java转换为int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9670723/

10-12 01:20