我正在尝试将二进制数转换为文件中的十进制数。我可以在我的文本文件中获取要转换的数字,如果我在一行中有多个二进制数,则代码只是跳过它。
List<Integer> list = new ArrayList<Integer>();
File file = new File("binary.txt");
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String text = null;
while ((text = reader.readLine()) != null) {
try {
list.add(Integer.parseInt(text,2));
}
catch (Exception ex) {
continue;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这是我正在使用的文本文件:
00100101
00100110 01000001
01100000
01111011
10010100 00100101
01101011
11000111 00011010
当我运行我的代码时,我得到:[37,96,123,107] 代码跳过有两个二进制数的行。 我在尝试转换整数时遇到了麻烦,而在while循环中没有使用reader.readLine()。非常感谢任何帮助!
答案 0 :(得分:1)
使用text.split("\\s+")
拆分while
循环读取的每一行,并迭代拆分值:
String text = null;
while ((text = reader.readLine()) != null) {
for (String value : text.split("\\s+")) {
try {
list.add(Integer.parseInt(value,2));
}
catch (Exception ex) {
continue; // should throw error: File is corrupt
}
}
}
答案 1 :(得分:1)
如果您在一行中有多个值,则应该这样做。
循环遍历多个值并单独添加。
try {
for (String s : text.split(" ") list.add(Integer.parseInt(s,2));
}
此外,就像安德烈斯写的那样,不建议忽略例外。