Python struct.unpack常用格式字符

本文详细介绍了Python的struct模块中的struct.unpack函数,用于解析根据特定格式字符串打包的二进制数据,涵盖了常见格式字符、字节顺序以及如何处理不同类型的数据打包和解析。
摘要由CSDN通过智能技术生成

struct.unpack 是 Python 标准库中 struct 模块的一个函数,用于解析由 bytes 对象表示的打包的二进制数据。它返回一个元组,包含根据格式字符串解析后的值。格式字符串由格式字符组成,这些字符指定了待解析数据的类型和字节顺序。

常见格式字符:

  • b: 有符号字符
  • B: 无符号字符
  • h: 有符号短整数
  • H: 无符号短整数
  • i: 有符号整数
  • I: 无符号整数
  • l: 有符号长整数
  • L: 无符号长整数
  • q: 有符号长长整数
  • Q: 无符号长长整数
  • f: 浮点数
  • d: 双精度浮点数
  • s: 字符串
  • p: 字符指针
  • x: 填充字节

此外,格式字符串还可以包含以下字符来指定字节顺序和大小:

  • @: 本机顺序(native order)和大小(size)
  • =: 本机顺序,但标准大小
  • <: 小端序(little-endian)
  • >: 大端序(big-endian)
  • !: 网络顺序(总是大端序)
import struct  
  
# 打包一个无符号短整数 (2 bytes, big-endian)  
packed_data = struct.pack('>H', 4321)  
  
# 使用 unpack 解析打包的数据  
unpacked_data = struct.unpack('>H', packed_data)  
  
# 输出解析后的结果  
print(unpacked_data[0])  # 输出: 4321
# 打包一个有符号整数 (4 bytes, little-endian) 和一个浮点数 (4 bytes, little-endian)  
packed_data = struct.pack('<if', -123, 3.14159)  
  
# 使用 unpack 解析打包的数据  
unpacked_data = struct.unpack('<if', packed_data)  
  
# 输出解析后的结果  
print(unpacked_data[0])  # 输出: -123  
print(unpacked_data[1])  # 输出: 3.14159
import struct  
  
# 打包一个长度为10的字符串(字符串不足10个字符时,会用空字节填充)  
packed_data = struct.pack('10s', b'hello')  
  
# 解析打包的数据  
unpacked_data = struct.unpack('10s', packed_data)  
  
# 输出解析后的结果(结果包含空字节,需要处理)  
print(unpacked_data[0])  # 输出: b'hello\x00\x00\x00\x00\x00'  
  
# 去除空字节  
print(unpacked_data[0].strip(b'\x00').decode('utf-8'))  # 输出: hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值