从二进制文件中读取以null结尾的文件名

时间:2015-04-05 12:01:51

标签: python io

在C中,我可以阅读一个"最多16个字符"文件名为null终止,只需将其读入一个小缓冲区:

FILE *fp = fopen("file.bin", "rb");
char filename[16];
fread(filename, 1, 16, fp);

但是在我的Python方法中,我实际上剥离了空字符并将其转换为ASCII,即使这些字符实际上可能不是ASCII,因为它似乎open()不接受{ {1}}字符串,如果我在代码中使用b'',则可能是结果。

decode("utf-8")

是否有更多"标准"这样做的方式?

1 个答案:

答案 0 :(得分:0)

您拥有嵌入了ASCII数据的二进制数据,因此您的方法是正确的。

Python字符串不是C字符串。数据以NULL结尾,这在Python中没有区别,标准库没有方法来读取这些数据,剥离NULL字节并解码数据,就像你已经完成的那样。

struct module确实支持以空字符结尾的字符串(16s调用struct.pack()将填充输出字符串以使用空值来填充所需的长度)但在阅读时,空值仍然存在。