线程“AWT-EventQueue-0”中的异常java.lang.NumberFormatException:对于输入字符串:“11101110110100011110111011010001”

时间:2015-11-28 02:02:15

标签: java string binary int

我想将String转换为Binary Integer,就像这样int k = 0B1101 ..... 0111

,错误显示为:

  

线程“AWT-EventQueue-0”中的异常java.lang.NumberFormatException:对于输入字符串:“11101110110100011110111011010001”

String a = "1110111011010001", 
       b = "11101110110101010110111011010001";
int K = Integer.parseInt(a.trim(),2);
int T = Integer.parseInt(b.trim(),2);

2 个答案:

答案 0 :(得分:1)

你得到一个例外,因为你传递的32位数字代表一个负整数,所以从parseInt的角度看它溢出int

您有两种解析数字的解决方案:

(1)通过带负号的否定表示,即

System.out.println(Integer.parseInt("-0010001001011100001000100101111", 2));

或(2)将原始号码传递给parseLong,并将结果转换为int,即

System.out.println((int)Long.parseLong("11101110110100011110111011010001", 2));

两个片段都会产生-288231727demo)的负值。

答案 1 :(得分:1)

这是因为它高于java的Integer Limits。 尝试使用long代替int