2017-03-27 1 views
0

J'ai un fichier binaire écrit par le Delphi. Voici ce que je sais:Lecture de chaînes à partir d'un fichier binaire

  • Le bloc 1: 4 octets représente un nombre entier de 32 bits.
  • Bloc 2: une valeur de chaîne (la longueur n'est pas fixée pour tous les fichiers binaires)
  • Bloc 3: 4 octets, représente un nombre entier de 32 bits.
  • Block 4: une valeur de chaîne (La longueur n'a pas été fixée pour tous les fichiers binaires)
  • ...
  • BlocN

i fait cela pour lire la première valeur de bloc:

import struct 

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

Qu'en est-il des valeurs de chaînes? Quelle serait une bonne solution? Y at-il un moyen d'itérer sur la chaîne et de trouver le délimiteur final "\ 0" de chaque valeur de chaîne comme en C?

Répondre

0

J'ai découvert que Delphi utilise une compression entier 7 bits pour spécifier au début d'une chaîne, combien d'octets doivent read.I trouvé here le même algorithme mis en œuvre avec python. Donc, je dois juste passer le fichier en fonction decode7bit(bytes): et il me dira combien d'octets je dois lire en avant.