从具有空格的文件中将二进制数转换为十进制数

时间:2015-12-06 20:08:12

标签: java bufferedreader

我正在尝试将二进制数转换为文件中的十进制数。我可以在我的文本文件中获取要转换的数字,如果我在一行中有多个二进制数,则代码只是跳过它。

    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()。非常感谢任何帮助!

2 个答案:

答案 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));
}

此外,就像安德烈斯写的那样,不建议忽略例外。