Java,Long.parse二进制字符串

Mic*_*Tin 10 java long-integer

为什么这段代码会抛出NumberFormatException:

String binStr = "1000000000000000000000000000000000000000000000000000000000000000";
System.out.println(binStr.length());// =  64
System.out.println(Long.parseLong(binStr, 2));
Run Code Online (Sandbox Code Playgroud)

Eng*_*uad 7

1000000000000000000000000000000000000000000000000000000000000000大于Long.MAX_VALUE.

请参阅/sf/answers/622227861/

考虑BigInteger(String val, int radix)改用.


编辑:

好的,这对我来说是新的.它似乎Integer.parseInt(binaryIntegerString, 2)并将Long.parseLong(binaryLongString, 2)二进制解析为符号量,而不是2的补码.


Oli*_*rth 5

因为它超出了范围. 1000...000是2 63,但Long最多只有2 63 - 1.