Emballer et déballer la structure Python
Le module struct de Python est capable d'effectuer les conversions entre les valeurs Python et les structures C, qui sont représentées sous forme de chaînes Python.
Python Struct
- Le module struct de Python peut être utilisé pour gérer des données binaires stockées dans des fichiers, des bases de données ou provenant de connexions réseau, etc.
- Il utilise des chaînes de format comme descriptions compactes de la disposition des structures C et la conversion prévue entre les valeurs Python.
Fonctions de structure Python
Il y a cinq fonctions importantes dans le module struct - pack(), unpack(), calcsize(), pack_into() et unpack_from(). Dans toutes ces fonctions, nous devons fournir le format des données à convertir en binaire. Certains des caractères de format populaires sont :
?: boolean
h: short
l: long
i: int
f: float
q: long long int
Vous pouvez obtenir la liste complète des caractères de format ici. Commençons à examiner les fonctions du module struct une par une.
Python struct.pack()
Cette fonction regroupe une liste de valeurs en une représentation String du type spécifié. Les arguments doivent correspondre exactement aux valeurs requises par le format. Regardons rapidement un exemple de struct pack() :
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
var = struct.pack('iii', 10, 20, 30)
print(var)
Lorsque nous exécutons ce script, nous obtenons la représentation suivante :
Notez que 'b' dans la sortie signifie binaire.
Python struct.unpack()
Cette fonction décompresse la valeur empaquetée dans sa représentation originale avec le format spécifié. Cette fonction renvoie toujours un tuple, même s'il n'y a qu'un seul élément. Examinons rapidement un exemple de la fonction struct unpack() :
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
print(struct.unpack('hhl', var))
Lorsque nous exécutons ce script, nous recevons notre représentation originale :
Il est clair que nous devons indiquer à l'interpréteur Python le format dans lequel nous devons décomposer les valeurs.
Taille de calcul de struct en Python()
Cette fonction calcule et renvoie la taille de la représentation en chaîne de caractères de la structure avec un format donné. La taille est calculée en termes de bytes. Regardons rapidement un exemple de code :
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
print("Size of String representation is {}.".format(struct.calcsize('hhl')))
Lorsque nous exécutons ce script, nous obtenons la représentation suivante :
Python struct pack_into(), unpack_from()
Ces fonctions nous permettent de regrouper les valeurs dans un tampon de chaîne et de les extraire d'un tampon de chaîne. Ces fonctions ont été introduites dans la version 2.5.
import struct
ctypes is imported to create a string buffer
import ctypes
As shown in previous example
size = struct.calcsize('hhl')
print(size)
Buffer 'buff' is created from ctypes
buff = ctypes.create_string_buffer(siz)
struct.pack_into() packs data into buff and it doesn't return any value
struct.unpack_from() unpacks data from buff, returns a tuple of values
print(struct.pack_into('hhl', buff, 0, 5, 10, 15))
print(struct.unpack_from('hhl', buff, 0))
Lorsque nous exécutons ce script, nous obtenons la représentation suivante :
C'est tout pour une brève introduction au module struct de python.




