java.lang.NumberFormatException.forInputString

java.lang.NumberFormatException.forInputString,java,string,exception,numberformatexception,Java,String,Exception,Numberformatexception,我试图将二进制字符串转换为十进制值,但出现了错误。 二进制字符串为32位,因此不会出现溢出情况 String s = "11111111111111111111111111111101"; System.out.print(s.length()); System.out.print(Integer.parseInt(s,2)); 例外情况是:- Exception in thread "main" java.lang.NumberFormatExcept

我试图将二进制字符串转换为十进制值,但出现了错误。 二进制字符串为32位,因此不会出现溢出情况

String s = "11111111111111111111111111111101";
System.out.print(s.length());
System.out.print(Integer.parseInt(s,2));
例外情况是:-

Exception in thread "main" java.lang.NumberFormatException: For input string: "11111111111111111111111111111101"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583)

Integer
类型不像您期望的那样大,请尝试使用
biginger

new BigInteger(s, 2)
输出

324294967293

第一位是1,因此该数字不能表示为正整数。如果尝试,它将“溢出”并变为负

如果这是您想要的,您可以:


输出:-3

您可以使用
long

String s = "11111111111111111111111111111101";
System.out.print(s.length());
System.out.print(Long.parseLong(s,2));
String s = "11111111111111111111111111111101";
System.out.print(s.length());
System.out.print(Long.parseLong(s,2));