python - 如何使用 python struct 包仅解包前 6 个字节
问题描述
我想使用 struct 包为我提供一些有效负载的前 6 个字节,因为我并不总是知道大小,例如
b'A\x10VuGe\x00d\x0c\xf4\x06\x0cf\x00'
如果我知道缓冲区的大小,则以下代码有效:
import struct
from datetime import datetime
from pytz import UTC
import json
from django.utils.encoding import smart_str
data2 = b'A\x10VuGe\x00d\x0c\xf4\x06\x0cf\x00'
devid,hw,sw,bat,ss,distance,interrupt = struct.unpack('>6sBBHbHb',data2)
print(f"DeviceID={devid.hex()} HW={hw} SW={'.'.join(str(sw))} "
f"BAT={bat:.3f}mV SignalStrength={-113+2*ss}dBm "
f"Distance={distance} "
f"Interrupt={interrupt}")
解决方案
只需使用:data = data[0:14]
您将拥有前 14 个字节.. 比按照您的方式解压
推荐阅读
- java - 在Java中的Hashmap中使用过去的数据和ArrayList的当前数据
- javascript - 当我们点击 iPhoneX 中的文本字段时,键盘没有打开
- sql-server - 集成服务目录 - 拒绝访问路径
- java - 如何将使用 wsadmin 从 websphere 中提取的 ConfigProperties_server1.props 转换为 xml 或 json 文件?
- python - Python - 正则表达式 - 匹配某些字符之间的字符
- javascript - 是否可以通过文件上传上传 JSON 文件并在 Angular 6 中读取内容而不与 API 交谈?
- c# - 在 asp.net mvc web 应用程序中增加会话超时
- php - 博客页面上的 Wordpress 评论循环
- android - API26 中的锁屏上未显示通知
- tensorflow - 没有为自定义分段损失函数的任何变量提供梯度