The struct
module in Python is used to convert native Python data types such as strings and numbers into a string of bytes and vice versa. What this means is that users can parse binary files of data stored in C structs in Python.
It is used mostly for handling binary data stored in files or from network connections, among other sources.
The module is only available in Python 3.x and needs to be imported first by writing
import struct
This process needs to be done at the start of the program.
There are several functions built into the struct module. Some important ones are:
struct.pack()
struct.pack()
is the function that converts a given list of values into their corresponding string representation. It requires the user to specify the format and order of the values that need to be converted.
The following code shows how to pack some given data into its binary form using the module’s struct.pack()
function.
import structpacked = struct.pack('i 4s f', 10, b'John', 2500)print(packed)
The first argument of the function represents the format string. A *format strings specifies the expected layout when packing and unpacking data. The rest of the arguments represent the data that needs to be packed.
These format strings are made up of format characters. Some common ones are:
struct.unpack()
This function converts the strings of binary representations to their original form according to the specified format. The return type of struct.unpack()
is always a tuple.
import structpacked = b'\n\x00\x00\x00John\x00@\x1cE'unpacked = struct.unpack('i 4s f', packed)print(unpacked)
The function is given a format string and the binary form of data. This function is used to parse the binary form of data stored as a C structure.
struct.calcsize()
This function calculates the size of the String representation of struct with a given format string.
import structsize = struct.calcsize('i 4s f')print("Size in bytes: {}".format(size))
Free Resources