import struct
# 示例1: 打包和解包整数
# 'I' 表示无符号整数 (unsigned int)
packed_data = struct.pack('I', 12345)
print(f"Packed: {packed_data}") # 打包后的二进制数据
unpacked_data = struct.unpack('I', packed_data)
print(f"Unpacked: {unpacked_data[0]}") # 解包后的整数
# 示例2: 打包和解包多个值
# 'i' 表示有符号整数 (signed int), 'f' 表示浮点数 (float)
values = (1, 2.5, -3)
packed_values = struct.pack('ifq', *values) # 包含整数、浮点数和长整数
print(f"Packed multiple values: {packed_values}")
unpacked_values = struct.unpack('ifq', packed_values)
print(f"Unpacked multiple values: {unpacked_values}")
# 示例3: 使用格式字符串中的数量词
# '4s' 表示4个字符的字符串, 'h' 表示短整数 (short int)
format_string = '4sh'
original_data = ('spam', 42)
packed_data = struct.pack(format_string, original_data[0].encode(), original_data[1])
print(f"Packed with count: {packed_data}")
unpacked_data = struct.unpack(format_string, packed_data)
print(f"Unpacked with count: {unpacked_data[0].decode()}, {unpacked_data[1]}")
struct.pack:用于将 Python 值根据给定的格式符转换为 C 结构体的字节表示。struct.unpack:用于将 C 结构体的字节表示转换回 Python 值。'I', 'i', 'f', 'q', '4s', 'h')定义了数据类型和长度,具体可以参考官方文档。encode() 和 decode():用于在字符串和字节之间进行转换,因为打包时需要使用字节形式的数据。通过这些例子,你可以了解如何使用 struct 模块来处理二进制数据。
上一篇:python中upper
下一篇:python的运算符
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站