从二进制文件中读取字符串

时间:2017-03-27 21:39:31

标签: python python-2.7 struct binaryfiles

我有一个由delphi编写的二进制文件。这就是我所知道的:

  • 块1:4个字节,代表32位的整数值。
  • 块2:字符串值(所有二进制文件的长度不固定)
  • 块3:4个字节,代表32位的整数值。
  • 块4:字符串值(所有二进制文件的长度不固定)
  • ...
  • BlockN

我这是为了读取第一个块值:

import struct

f = open("filename", 'rb')
value = struct.unpack('i', f.read(4))

Strings值怎么样?什么是好的解决方案?有没有办法迭代字符串并找到每个字符串值的最终分隔符“\ 0”,就像在C中一样?

2 个答案:

答案 0 :(得分:0)

如果您不知道长度,打包时会有点复杂。我给你一个应该解决你的问题的参考。 packing and unpacking variable length array/string using the struct module in python

答案 1 :(得分:0)

我发现Delphi使用7位整数压缩来指定字符串的开头,需要读取多少字节。我发现here使用python实现了相同的算法。所以,我只需要将文件传递给decode7bit(bytes):函数,它会告诉我有多少字节需要读取。