我是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我确实试过找到类似的问题,比如我的,但无济于事。
答案 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));