需要解析一段byte字段,原来需要通过遍历依次解析,后来发现了效率更高的办法
-
struct库Python 中用于处理二进制数据的标准库之一,它允许你以一种结构化的方式读取和写入二进制数据。在使用 struct 模块时,你需要指定一个格式字符串,该格式字符串描述了二进制数据的布局和类型。以下
-
例:
import struct
format_str = ">HHHHHHhhhHhIIIIIHBBBBBBHB" # 根据字段定义构建解包格式
target_values = struct.unpack(format_str, target_data) # target_data这里即为byte数据,长度一定要匹配
# 这里输出后既可生成对应format_str长度的元组数据
(1, 73, 0, 0, 5298, 1163, -931, -1039, 24, 1825, -1834, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 48, 0, 0, 0)
- 通过struct.pack(format_str, *target) 还可以逆向转回来
整数:
i、I:有符号和无符号整数(4 字节)。
h、H:有符号和无符号短整数(2 字节)。
q、Q:有符号和无符号长整数(8 字节)。
b、B:有符号和无符号长整数(1 字节)。
字符:
c:字符(1 字节)。
s:字节串。
浮点数:
f:单精度浮点数(4 字节)。
d:双精度浮点数(8 字节)。
字节顺序:
'<':小端字节顺序(低位字节在前,高位字节在后)。
'>':大端字节顺序(高位字节在前,低位字节在后)。
其他:
x:占位符(用于对齐数据结构)。
?:布尔值。
版权说明
本文地址:http://www.liuyangdeboke.cn/?post=51
未标注转载均为本站远程,转载请注明文章出处:
发表评论