Bonjour,

J'essaie de decoder un fichier binaire

voici le format de fichier que je trouve dans la doc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Microsoft Data Type  Bytes
BYTE                       1
WORD                     2
DWORD                   4
Dans mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
print(struct.unpack('<HBBH2HI', binary))
où binary est ma séquence d'octets, et j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
(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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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