5 votes

fonction unpack en python

J'essaie de comprendre la fonction unpack de Python et comment elle utilise la chaîne de format.

J'utilise la chaîne de format "I" qui correspond à unsigned int (taille, 4 octets) comme exemple.

Selon la documentation, la fonction unpack accepte une chaîne et la convertit en une liste de valeurs basée sur la chaîne de format.

http://docs.python.org/2/library/struct.html

J'ai donc utilisé la valeur d'entrée sous la forme d'une chaîne de caractères, "test", et voici le résultat :

>>> import struct
>>> input="test"
>>> l = struct.unpack("I", input)[0]
>>> print l
1953719668

J'essaie de comprendre comment la valeur de sortie a été dérivée de l'entrée.

>>> from struct import *
>>> calcsize('I')
4

la taille de "I" est de 4 octets. La chaîne "test" comporte 4 caractères, soit 4 octets. J'ai essayé de convertir chaque caractère en sa valeur ASCII hexagonale correspondante et de le stocker dans l'ordre little endian, mais cela ne correspond pas à la sortie ci-dessus.

Toute aide serait appréciée.

5voto

falsetru Points 109148

Utilice 4s si vous souhaitez décompresser la chaîne telle quelle.

>>> struct.unpack('4s', 'test')[0]
'test'

1953719668 est dérivé par : (petit endian)

>>> ord('t') + (ord('e') << 8) + (ord('s') << 16) + (ord('t') << 24)
1953719668

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X