java.lang.NumberFormatException.forInputString
我试图将二进制字符串转换为十进制值,但出现了错误。 二进制字符串为32位,因此不会出现溢出情况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
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));