Integer.parseInt("ff8ca87c", 16);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这给了我一个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)
Run Code Online (Sandbox Code Playgroud)
它失败的原因是你试图+0xff8ca87c输入有符号整数.32位有符号整数的最大值是+0x7fffffff,因为最高有效位用于存储符号.
尝试使用long替代品.64位signed int的最大值是0x7fffffffffffffff,在这种情况下,这足以满足您的需要.
或者,在Java 8中,您可以使用Integer.parseUnsignedInt("ff8ca87c", 16);将该值视为无符号整数.