我想将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);
答案 0 :(得分:1)
你得到一个例外,因为你传递的32位数字代表一个负整数,所以从parseInt
的角度看它溢出int
。
您有两种解析数字的解决方案:
(1)通过带负号的否定表示,即
System.out.println(Integer.parseInt("-0010001001011100001000100101111", 2));
或(2)将原始号码传递给parseLong
,并将结果转换为int
,即
System.out.println((int)Long.parseLong("11101110110100011110111011010001", 2));
两个片段都会产生-288231727
(demo)的负值。
答案 1 :(得分:1)
这是因为它高于java的Integer Limits。
尝试使用long
代替int
。