【问题标题】:First byte skipped when reading binary file in python在python中读取二进制文件时跳过第一个字节
【发布时间】:2021-02-01 08:47:19
【问题描述】:

我想读入一个二进制文件并从其内容中生成一个 c 初始化程序。但是不知何故,我的读取过程似乎总是跳过第一个字节。你能帮我解释一下为什么会这样吗?

该文件在二进制文件中以 0x4c 开头,但我从未在以下 python 代码的输出中看到这一点:

f = open("GoldenFPGA.bit", "rb")
count = 0
print("#ifndef __CL_NX_BITSTREAM_HEADER_H");
print("#define __CL_NX_BITSTREAM_HEADER_H");
print("const uint8_t cl_nx_bitstream[] = ");
print("{");
print("    0x7A, 0x00, 0x00, 0x00,");
print("    ", end='')
try:
    byte = f.read(1)
    while byte:
        # Do stuff with byte.
        byte = f.read(1)
        if byte:
            print("0x" + byte.hex() + ", ", end='')
        count = count + 1
        if count % 8 == 0:
            print("\n    ", end='')
finally:
    f.close()
print("\n};");
print("#endif");

感谢您对此问题的任何帮助。

【问题讨论】:

    标签: python file-io binaryfiles


    【解决方案1】:

    问题是:

    你在循环之前读取了第一个字节,当你进入循环时 您读取了另一个字节 -> 导致您跳过了第一个字节。

    你应该把它改成:

    f = open("GoldenFPGA.bit", "rb")
    count = 0
    print("#ifndef __CL_NX_BITSTREAM_HEADER_H");
    print("#define __CL_NX_BITSTREAM_HEADER_H");
    print("const uint8_t cl_nx_bitstream[] = ");
    print("{");
    print("    0x7A, 0x00, 0x00, 0x00,");
    print("    ", end='')
    try:
        byte = f.read(1)
        while byte:
            # Do stuff with byte.
            if byte:
                print("0x" + byte.hex() + ", ", end='')
            count = count + 1
            if count % 8 == 0:
                print("\n    ", end='')
            # read next byte
            byte = f.read(1)
    finally:
        f.close()
    print("\n};");
    print("#endif");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2012-07-11
      • 2015-05-08
      相关资源
      最近更新 更多