我正在开发一个程序,我试图获取二进制字符串并使用这段代码将其转换为整数:
int x = Integer.parseInt(arrayList.get(count), 2);
//arrayList is a collection of 30 character binary strings
//count is an incrementing integer used to choose which string to use while inside of a while loop
我已经使用" 001010"这样的字符串测试了这个程序,但是使用更大的字符串,如" 100000110000010100001111010110"编译,但终端输出给我一个错误:
"@ java.lang.NumberFormatException.forInputString(NumberFormatException.java:(line number))
我该如何解决这个问题?
答案 0 :(得分:1)
您可以尝试java.math.BigInteger
。
String bin = "100000110000010100001111010110";
BigInteger bi = new BigInteger(bin, 2);
System.out.println(bi);
输出:
549536726
您也可以使用Long.valueOf()
执行此操作。但是,使用Long,您的二进制字符串最长可达63位,而使用BigInteger时,长度可以是任意多位。
String bin = "100000110000010100001111010110";
long biLong = Long.valueOf(bin, 2);
System.out.println(biLong);
答案 1 :(得分:0)
尝试使用Long.parseLong
方法代替Integer.parseInt