在C Linux中将二进制文件转换为可读的文本文件

时间:2019-03-30 07:07:34

标签: c file binary

我得到了一个二进制文件,我需要使用C和Linux将其转换为可读的文本文件。下面的代码部分来自此站点。

我尝试了几种发现的算法,但似乎没有用。

searchNum = 10

with open("num.txt", "r") as f:
    list = [int(line.strip()) for line in f.readlines()]
    count = list.count(searchNum)

1 个答案:

答案 0 :(得分:0)

您的代码将 memdb 的二进制内容精确复制到 output.out 。完全不转换为可读文本。请注意,while(!feof(input))不是测试文件结尾的正确方法,但是在您的特定情况下,这不会造成问题。

您的目标不明确:

  • 可读文本文件是什么意思?
  • memdb 包含哪些数据?
  • 您是否要将非ASCII数据转换为人类更易理解的某种替代形式?

这是产生十六进制转储的替代方法:

/* copy binary file memdb as hex, returns the number of bytes or negative for error */
int copy_memdb(void) {
    FILE *input;
    FILE *output;
    int c, count;

    input = fopen("memdb", "rb");
    if (input == NULL) {
        return -1;
    }
    output = fopen("output.out", "w");
    if (output == NULL) {
        fclose(input);
        return -2;
    }
    count = 0;
    while ((c = getc(input)) != EOF) {
        if (count++ % 16 == 0) {
            putc('\n', output);
        } else {
            putc(' ', output);
        }
        fprintf(%02X", c);
    }
    if (count > 0)
        putc('\n', output);

    fclose(input);
    fclose(output);
    return count;
}