将二进制字符串解析为整数时出现数字格式异常
Number Format Exception when parse a binary String to an integer
public static void main(String[] args) {
int val1 = 700173;
int val2 = 700173;
int val3 = 700173;
int val4 = 700173;
String string1 = Integer.toBinaryString(val1);
String string2 = Integer.toBinaryString(val2);
String string3 = Integer.toBinaryString(val3);
String string4 = Integer.toBinaryString(val4);
String binaryString = string1 + string2 + string3 + string4;
System.out.println(binaryString);
System.out.println(Integer.parseInt(binaryString, 2));
}
所以我有这个代码块,我在其中取 4 个整数,将它们转换为二进制字符串,连接它们,然后重新转换为整数。
所以我可以使用Integer.parseInt手动转换每个字符串。但是在连接之后,我得到了由最后一个打印语句引起的数字格式异常。
我正在尝试将这个二进制字符串转换为整数。
10101010111100001101101010101111000011011010101011110000110110101010111100001101
我觉得可能跟长度有关
任何帮助都会很好地了解我所缺少的。
谢谢-
一个int
只能有32位。那是81位。您可以使用 BigInteger
。喜欢,
BigInteger bi = new BigInteger("101010101111000011011010101" //
+ "011110000110110101010111" //
+ "10000110110101010111100001101", 2);
System.out.println(bi);
或在您的代码中
System.out.println(new BigInteger(binaryString, 2));
产出
807245278494179007835917
public static void main(String[] args) {
int val1 = 700173;
int val2 = 700173;
int val3 = 700173;
int val4 = 700173;
String string1 = Integer.toBinaryString(val1);
String string2 = Integer.toBinaryString(val2);
String string3 = Integer.toBinaryString(val3);
String string4 = Integer.toBinaryString(val4);
String binaryString = string1 + string2 + string3 + string4;
System.out.println(binaryString);
System.out.println(Integer.parseInt(binaryString, 2));
}
所以我有这个代码块,我在其中取 4 个整数,将它们转换为二进制字符串,连接它们,然后重新转换为整数。
所以我可以使用Integer.parseInt手动转换每个字符串。但是在连接之后,我得到了由最后一个打印语句引起的数字格式异常。
我正在尝试将这个二进制字符串转换为整数。
10101010111100001101101010101111000011011010101011110000110110101010111100001101
我觉得可能跟长度有关
任何帮助都会很好地了解我所缺少的。
谢谢-
一个int
只能有32位。那是81位。您可以使用 BigInteger
。喜欢,
BigInteger bi = new BigInteger("101010101111000011011010101" //
+ "011110000110110101010111" //
+ "10000110110101010111100001101", 2);
System.out.println(bi);
或在您的代码中
System.out.println(new BigInteger(binaryString, 2));
产出
807245278494179007835917