Python pack函数
Python pack()
函数用于将指定格式的 packing 元组数据转换为字节流。
Python的内置模块 struct
提供了pack()和unpack()两个函数,用来处理不同类型的数据与字节之间的转换,适用于处理二进制数据、网络传输数据等场景。
使用方法
pack() 函数语法如下:
struct.pack(format,*args)
格式说明:
* 格式字符串由一个或多个格式符及其大小组成,用于说明不同类型的数据在字节流中的存储方式。常见的格式符包括:
– i
:int类型
– f
:float类型
– s
:字符串类型
* *args
代表要转换的 packing 元组。
pack() 函数返回值为 bytes 类型。
代码示例
下面是两个代码示例。
示例1:整型数据转换
import struct
# 定义要转换的整型数据
n = 1234
# 转换为字节流
b = struct.pack('i', n)
print(b)
输出结果为:
b'\xd2\x04\x00\x00'
解释说明:整数在内存中的存储方式可能会因机器的字节序(byte order)不同而有所不同。此时,可以使用 b
表示采用 big-endian 字节序,或使用 l
表示采用 little-endian 字节序,例如:
import struct
# 定义要转换的整型数据
n = 1234
# 小端序
b_le = struct.pack('<i', n)
print(b_le)
# 大端序
b_be = struct.pack('>i', n)
print(b_be)
输出结果分别为:
b'\xd2\x04\x00\x00'
b'\x00\x00\x04\xd2'
示例2:结构体数据转换
import struct
# 定义要转换的结构体数据
struct_values = (1234, 5678, 9.999)
# 转换为字节流
b = struct.pack('iid', *struct_values)
print(b)
输出结果为:
b'\xd2\x04\x00\x00\xde\x15\x00\x00\x9a\x99\x99\x99\x99\x99\x10\x40'
解释说明:iid
表示结构体中包含一个整数、一个整数和一个浮点数。