Le module struct Python est capable d’effectuer les conversions entre les valeurs Python et les structures C, qui sont représentées comme des Chaînes Python.
Struct Python
- Le module struct Python peut être utilisé pour gérer les 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 de la conversion prévue vers/à partir des valeurs Python.
Fonctions Struct 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 emballe une liste de valeurs dans une représentation de chaîne de caractères du type spécifié. Les arguments doivent correspondre exactement aux valeurs requises par le format. Jetons rapidement un coup d’œil à 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 le ‘b’ dans la sortie signifie binaire.
Python struct.unpack()
Cette fonction déballe la valeur emballé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. Jetons rapidement un coup d’œil à un exemple de fonction unpack() de struct :
import struct
var = struct.pack('hhl', 5, 10, 15)
print(var)
print(struct.unpack('hhl', var))
Lorsque nous exécutons ce script, nous récupérons notre représentation d’origine : Clairement, nous devons indiquer à l’interpréteur Python le format dans lequel nous devons déballer les valeurs.
Python struct calcsize()
Cette fonction calcule et retourne la taille de la représentation de la structure avec un format donné. La taille est calculée en termes d’octets. Jetons rapidement un coup d’œil à 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 packer les valeurs dans un tampon de chaîne et de déballer à partir d’un tampon de chaîne. Ces fonctions sont introduites dans la version 2.5.
import struct
# ctypes est importé pour créer un tampon de chaîne
import ctypes
# Comme indiqué dans l'exemple précédent
size = struct.calcsize('hhl')
print(size)
# Le tampon 'buff' est créé à partir de ctypes
buff = ctypes.create_string_buffer(siz)
# struct.pack_into() packe les données dans buff et ne retourne aucune valeur
# struct.unpack_from() déballe les données de buff, retourne un tuple de valeurs
print(struct.pack_into('hhl', buff, 0, 5, 10, 15))
print(struct.unpack_from('hhl', buff, 0))
Quand nous exécutons ce script, nous obtenons la représentation suivante : C’est tout pour une brève introduction du module Python
struct
.
Source:
https://www.digitalocean.com/community/tutorials/python-struct-pack-unpack