J'essaie de comprendre la fonction de décompression en Python et comment elle utilise la chaîne de format. J'utilise la chaîne de format, "I" qui correspond à un entier non signé (taille, 4 octets) à titre d'exemple.décompresser la fonction en python
Conformément à la documentation, la fonction de décompression 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
Alors, je la valeur d'entrée comme une chaîne, « test » et voici le résultat:
>>> import struct
>>> input="test"
>>> l = struct.unpack("I", input)[0]
>>> print l
1953719668
Je suis en train 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" a 4 caractères, soit 4 octets. J'ai essayé de convertir chaque caractère en sa valeur hexadécimale hexadécimale correspondante et de l'enregistrer dans un ordre peu endian mais cela ne correspond pas à la sortie ci-dessus.
Toute aide serait appréciée.
Merci, je vérifiais un code qui utilisait "I" comme la chaîne de format pour la chaîne d'entrée. Pourriez-vous élaborer davantage sur la façon dont la chaîne de format est appliquée à l'entrée? Je pensais en petit boutiste que ce serait: ord (t), ord (s), ord (e), ord (t). octet le plus significatif à l'octet le moins significatif. Aussi, et si l'entrée a une taille supérieure à 4 octets (taille de unsigned int), elle n'appliquera pas de chaîne de format aux caractères restants? –
@ NeonFlash, ord ('t') + (ord ('e') << 8) + (ord ('s') << 16) + (ord ('t') << 24) == (ord ('t') << 24) + (ord ('s') << 16) + (ord ('e') << 8) + ord ('t') – falsetru
@NeonFlash, taille de la calcsize du format () et la longueur de la chaîne devrait être la même. Ou, il va augmenter 'struct.error'. – falsetru