小编Lao*_*itt的帖子

用于32位带符号二进制字符串的Java Integer.parseInt()会引发NumberFormatException

这是Java Api的错误吗?

    int i = 0xD3951892;
    System.out.println(i); // -745203566
    String binString = Integer.toBinaryString(i);
    int radix = 2;
    int j = Integer.valueOf(binString, radix );
    Assertions.assertThat(j).isEqualTo(i);
Run Code Online (Sandbox Code Playgroud)

我希望它毫无疑问是真的.但它抛出异常:

java.lang.NumberFormatException: For input string: "11010011100101010001100010010010"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:495)
at java.lang.Integer.valueOf(Integer.java:556)
at com.zhugw.temp.IntegerTest.test_valueof_binary_string(IntegerTest.java:14)
Run Code Online (Sandbox Code Playgroud)

所以如果我有一个二进制字符串,例如11010011100101010001100010010010,我怎样才能在Java中得到它的十进制数(-745203566)?DIY?编写代码来实现下面的等式?

在此输入图像描述

java

6
推荐指数
2
解决办法
5669
查看次数

标签 统计

java ×1