J'essaie de trouver des octets spécifiques dans un fichier chargé en tant que ConstBitStream:Comment trouver des données binaires dans ConstBitStream à partir d'un décalage donné?
s = ConstBitStream(filename=myFile)
found = s.find('0x4140', bytealigned=False)
Cela fonctionne très bien pour la première occurrence. Après avoir trouvé la première séquence, je veux trouver le prochain en utilisant la méthode find
à nouveau, mais à partir d'un décalage maintenant:
s.bytepos = position_after_the_first_occurrence + my_offset
found = s.find('0x4140', start=s.bytepos, bytealigned=False)
Cela ne semble pas fonctionner. Je reçois toujours la position de la première occurrence de ma séquence binaire.
Qu'est-ce qui ne va pas?
UPDATE:
(valeurs de premier found
et s.bytepos
):
found = {tuple} (54784,)
s.bytepos = {int} 6848
(valeurs de deuxième found
et s.bytepos
):
s.bytepos = {int} 32969
found = {tuple} (54784,)
Il semble que la mise en start=s.bytepos
n'a pas n'importe quel effet.
Pouvez-vous imprimer les valeurs de 'found' (la première valeur) et' s.bytepos'? –
N'utilisez pas 's.bytepos' comme valeur pour l'argument' start', utilisez plutôt 's.pos'. – user2683246
Assurez-vous que 'my_offset' compte les octets, pas les bits. Sachez que la valeur 'found' est un tuple avec un décalage de bit, pas un décalage d'octet. – user2683246