尝试解析字符串时数字格式异常

时间:2019-01-14 20:33:25

标签: java string-conversion

我想将Integer.MAX_VALUE转换为二进制文件,并希望表示形式为int。我将其传递给Integer.tobinarystring()并用Integer.parseint包装,但是我得到了numberformatexception。

这是代码

System.out.println(
    Integer.parseInt(
            Integer.toBinaryString(Integer.MAX_VALUE)
    )
);

这是个例外

Exception in thread "main" java.lang.NumberFormatException: For input string: "1111111111111111111111111111111"

2 个答案:

答案 0 :(得分:4)

Integer.MAX_VALUE是2,147,483,647

在二进制文件中是: 1111111111111111111111111111111

如果我们再次将其视为整数,即1,111,111,111,111,111,111,111,111,111,111,您可能会发现它比最大值大得多。

如果您确实需要将其作为一个整数来处理,您可能想研究BigInteger

答案 1 :(得分:2)

如果要获取二进制字符串的整数值

1111111111111111111111111111111

您必须使用parseInt()的另一个签名,该签名以radix作为第二个参数,
在这种情况下,二进制字符串的基数为2

String str = Integer.toBinaryString(Integer.MAX_VALUE);
int number = Integer.parseInt(str, 2);
System.out.println(number);

它将打印:

2147483647