1. 当前位置:网站首页 > Python

快速转换byte中无符号有符号不同长度的解析方法


需要解析一段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:占位符(用于对齐数据结构)。
?:布尔值。


本文最后更新于2023-9-11,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
版权说明

本文地址:http://www.liuyangdeboke.cn/?post=51
未标注转载均为本站远程,转载请注明文章出处:

发表评论

联系我们

在线咨询:点击这里给我发消息

微信号:17721538135

工作日:9:00-23:00,节假日休息

扫码关注