Empaquetar y desempaquetar estructuras de Python

El módulo de estructura de Python es capaz de realizar las conversiones entre los valores de Python y las estructuras de C, que se representan como cadenas de Python .

Estructura de Python

  • El módulo de estructura de Python se puede utilizar para manejar datos binarios almacenados en archivos, bases de datos o conexiones de red, etc.
  • Utiliza cadenas de formato como descripciones compactas del diseño de las estructuras C y la conversión prevista hacia/desde valores de Python.

Funciones estructurales de Python

Hay cinco funciones importantes en el módulo struct: , , pack()y unpack(). En todas estas funciones, tenemos que proporcionar el formato de los datos que se convertirán a binario. Algunos de los caracteres de formato más populares son:calcsize()pack_into()unpack_from()

?: booleanh: shortl: longi: intf: floatq: long long int

Puede obtener la lista completa de caracteres de formato aquí . Comencemos a analizar las funciones del módulo struct una por una.

Estructura de Python.pack()

Esta función empaqueta una lista de valores en una representación de cadena del tipo especificado. Los argumentos deben coincidir exactamente con los valores requeridos por el formato. Veamos rápidamente un ejemplo de struct pack():

import structvar = struct.pack('hhl', 5, 10, 15)print(var) var = struct.pack('iii', 10, 20, 30)print(var)

Cuando ejecutamos este script, obtenemos la siguiente representación: Tenga en cuenta que ‘b’ en la salida representa binario.

Estructura de Python.unpack()

Esta función descomprime el valor empaquetado en su representación original con el formato especificado. Esta función siempre devuelve una tupla , incluso si solo hay un elemento. Veamos rápidamente el ejemplo de la función struct unpack():

import structvar = struct.pack('hhl', 5, 10, 15)print(var)print(struct.unpack('hhl', var))

Cuando ejecutamos este script, recuperamos nuestra representación original: Claramente, debemos indicarle al intérprete de Python el formato en el que necesitamos descomprimir los valores.

Estructura calcsize() de Python

Esta función calcula y devuelve el tamaño de la representación en cadena de una estructura con un formato determinado. El tamaño se calcula en términos de bytes. Veamos rápidamente un fragmento de código de ejemplo:

import struct var = struct.pack('hhl', 5, 10, 15)print(var)print("Size of String representation is {}.".format(struct.calcsize('hhl')))

Cuando ejecutamos este script, obtenemos la siguiente representación:

Estructura Python pack_into(), unpack_from()

Estas funciones nos permiten empaquetar los valores en un búfer de cadenas y desempaquetarlos desde un búfer de cadenas. Estas funciones se introdujeron en la versión 2.5.

import struct# ctypes is imported to create a string bufferimport ctypes# As shown in previous examplesize = struct.calcsize('hhl')print(size)# Buffer 'buff' is created from ctypesbuff = 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 valuesprint(struct.pack_into('hhl', buff, 0, 5, 10, 15))print(struct.unpack_from('hhl', buff, 0))

Cuando ejecutamos este script, obtenemos la siguiente representación: Eso es todo por una breve introducción al structmódulo de Python.

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio