我试图像这样转换为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/