Integer.parseInt("ff8ca87c", 16);
由于某种原因,这给了我一个NumberFormatException。你知道为什么吗?
Exception in thread "main" java.lang.NumberFormatException: For input string: "ff8ca87c"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.valueOf(Unknown Source)
答案 0 :(得分:6)
失败的原因是您尝试将+0xff8ca87c
置于有符号整数中。 32位有符号整数的最大值为+0x7fffffff
,因为最高有效位用于存储符号。
尝试使用long
代替。 64位signed int的最大值为0x7fffffffffffffff
,在这种情况下,这足以满足您的需求。
或者,在Java 8中,您可以使用Integer.parseUnsignedInt("ff8ca87c", 16);
来将值视为无符号整数。