在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")
是否有更多"标准"这样做的方式?
答案 0 :(得分:0)
您拥有嵌入了ASCII数据的二进制数据,因此您的方法是正确的。
Python字符串不是C字符串。数据以NULL结尾,这在Python中没有区别,标准库没有方法来读取这些数据,剥离NULL字节并解码数据,就像你已经完成的那样。
struct
module确实支持写以空字符结尾的字符串(16s
调用struct.pack()
将填充输出字符串以使用空值来填充所需的长度)但在阅读时,空值仍然存在。