我的二进制程序中的java.lang.NumberFormatException

时间:2014-10-18 11:50:03

标签: java exception binary numbers format

我是Java的新手,请原谅我的无知,但我无法弄清楚为什么我的程序每次都会抛出错误。我制作了一个将字符串转换为二进制并返回的程序。这是我的错误。我尝试过各种不同的方法,但它总是会抛出相同的错误。 :(

Exception in thread "main" java.lang.NumberFormatException: For input string: "010000010001011110010000000010001000"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at main.main(main.java:64)

这是我的代码行。

int charCode = Integer.parseInt(String.valueOf(binary), 2);
如果你想知道,

Binary与StringBuilder一起使用。 提前致谢! :) PS我确实试过找到类似的问题,比如我的,但无济于事。

3 个答案:

答案 0 :(得分:2)

Java中的整数(以及几乎所有其他编程语言)长度为4个字节,这意味着它只能存储〜4 300 000 000个数字,带有负数,它是-2 147 000 000到{{1} }

您输入的数字太大,无法将其解析为整数。


另外,我没有看到任何理由将二进制代码解析为整数。这应该可以解决问题:

+2 147 000 000

输出:

    String binaryInput = "10000010001011110010000000010001000";

    long myNumber = 0;
    for (int i = binaryInput.length()-1; i >= 0; i--) {
        if (binaryInput.charAt(i) == '1') {
            myNumber += Math.pow(2, binaryInput.length() - i - 1);
        }
    }

    System.out.println("And the value is: " + myNumber);

答案 1 :(得分:2)

尝试:

long charCode = Long.parseLong(String.valueOf(binary), 2);

您的二进制值超过Integer.MAX_VALUE

答案 2 :(得分:0)

BigInteger与base' 2' ??单行代码......

String str = "010000010001011110010000000010001000";
System.out.println(new BigInteger(str, 2));