为什么此代码会抛出 NumberFormatException
:
String binStr = "1000000000000000000000000000000000000000000000000000000000000000";
System.out.println(binStr.length());// = 64
System.out.println(Long.parseLong(binStr, 2));
最佳答案
1000000000000000000000000000000000000000000000000000000000000000000
大于 Long.MAX_VALUE
。
参见 https://stackoverflow.com/a/8888969/597657
罢工><罢工>罢工>
考虑使用 BigInteger(String val, int radix)
相反。
编辑:
好的,这对我来说是新的。看来 Integer.parseInt(binaryIntegerString, 2)
和 Long.parseLong(binaryLongString, 2)
将二进制解析为符号幅度而不是 2 的补码。
关于Java,Long.parse 二进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14926920/