java - 将带有空格的文件中的二进制数转换为十进制数

标签 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() 时遇到问题。非常感谢任何帮助!

最佳答案

使用 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
        }
    }
}

关于java - 将带有空格的文件中的二进制数转换为十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34122086/

相关文章:

java - 尝试替换文件中的字符时出现空指针异常

Java 如何提高读取 50G 文件的能力

java - 如何在java中从bufferedreader读取并运行多个变量?

java - 简单的 string.equals 工作不正确 - Java

java - 应该使用哪个 Twitter API 使用访问 token 而不是 user_id 或 screen_name 来获取用户基本信息?

java - Android 的宽高比和视口(viewport) : Need an explication

java - Java 中类似 Python 的文档测试?

java - 为什么我无法将所有行导出到文本文件?

java - 使用 try-with-resources 或在 "BufferedReader"子句中关闭此 "finally"

java - 我可以编译依赖于 .class 文件的 java 代码,但我没有源 .java 文件吗?