python 中的 struct 模块使用

Python中的struct模块是用来处理字节序列的工具,它能够把不同的数据类型转换成二进制字节序列,或者把已经编码的字节序列进行解码。

有两个重要的函数

pack(fmt, v1, v2, …) 将指定的值按指定的格式(fmt)进行打包,并返回打包后的二进制数据。

unpack(fmt, buffer)   按照指定的格式(fmt)从缓冲区中读取数据,并返回一个元组。

其它函数:

calcsize(fmt):返回该格式(fmt)所需的缓冲区大小。

pack_into(fmt, buffer, offset, v1, v2, …):与pack()函数类似,但是可以自己定义缓冲区的长度和偏移量。

unpack_from(fmt, buffer, offset=0):与unpack()函数类似,但可以自己定义缓冲区的长度和偏移量。

iter_unpack(fmt, buffer):将缓冲区中的数据按指定的格式(fmt)拆分成多个元组,并返回一个迭代器对象。

pack_int(value, size, big_endian=False, signed=False):将整数按给定的字节大小、大小端模式和符号处理方式进行打包,返回打包后的二进制数据。

unpack_int(data, big_endian=False, signed=False):将给定的二进制数据解包成整数,并返回解包后的整数。

unpack_bits(data):将给定的二进制数据解包成位(bit)的列表,并返回该列表。

can_unpack(fmt):检查指定的格式(fmt)是否可被解包。

islice(iterable, start, stop[, step]):创建一个从iterable中按一定步长切片得到的迭代器对象。

packb(v, **kwargs):将一个Python对象按指定的格式转换为bytes对象。

unpack_from_buffer(fmt, buffer, offset=0):与unpack()函数类似,但是从缓冲区中读取数据时,使用缓冲区对象的read()方法而不是读写数据缓存区。

用法举例:

import struct
num = 123456789
packed = struct.pack('>i', num)
print(unpack_data)  # 输出为 (1, 3.140000104904175, b'hello')


unpack_data = struct.unpack('>i', packed)
print(unpack_data[0]) # 输出为 (123456789,)

格式参数 fmt 说明:

 ‘b’: 有符号字节(byte)
‘B’: 无符号字节(byte)
‘h’: 有符号短整型(short)
‘H’: 无符号短整型(unsigned short)
‘i’: 有符号整型(int)
‘I’: 无符号整型(unsigned int)
‘l’: 有符号长整型(long)
‘L’: 无符号长整型(unsigned long)
‘f’: 单精度浮点数(float)
‘d’: 双精度浮点数(double)
‘c’: 字符
‘<’: 小端字节序(little-endian)即低位字节在前
‘>’: 大端字节序(big-endian)即高位字节在前
‘!’: 网络字节序(network order)即大端字节序

你可能感兴趣的:(开发语言,python)