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

number format exception when trying to parse a string

我想将 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"

Integer.MAX_VALUE 是 2,147,483,647

在二进制中是: 1111111111111111111111111111111

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

如果您确实需要将其作为 int 来处理,您可能需要研究 BigInteger

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

1111111111111111111111111111111

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

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

它将打印:

2147483647