Bonjour,
J'essaie de decoder un fichier binaire
voici le format de fichier que je trouve dans la doc:
1 2 3 4 5 6 7 8
| Field Byte Offset
WORD MagicNumber 0
BYTE HeaderType 2
BYTE SerialPort 3
WORD NumChansToFollow 4
WORD Reserved[2] 6
DWORD NumBytesThisRecord 10
WORD Year 14 |
Et avant, j'ai :
1 2 3 4
| Microsoft Data Type Bytes
BYTE 1
WORD 2
DWORD 4 |
Dans mon code :
print(struct.unpack('<HBBH2HI', binary))
où binary est ma séquence d'octets, et j'obtiens :
(64206, 0, 0, 2, 0, 0, 2384)
soit 7 valeurs, alors que je n'ai que 6 champs au départ. il semble qu'il considère le 2H comme 2 WORD indépendants, ce que semble confirmer un post ici
du coup, quand je veux ensuite mettre ça dans un namedtuple, ça ne marche pas. Je n'ai pas de message d'erreur, mais rien ne s'affiche avec ce code :
1 2 3 4 5 6 7 8 9
| ll = 'MagicNumber HeaderType SubChannelNumber NumChansToFollow Reserved NumBytesThisRecord'
nt = namedtuple('mytuple', ll)
self.data = nt._make(struct.unpack(fmt, self.binary))
print('data', self.data)
dd = self.data._asdict()
for v in dd.keys():
print(v, dd[v]) |
Comment faire ?
Merci,
Nico
Partager