如何使用 python struct 包仅解包前 6 个字节
Posted
技术标签:
【中文标题】如何使用 python struct 包仅解包前 6 个字节【英文标题】:How to use python struct package to only unpack first 6 bytes 【发布时间】:2021-11-28 08:39:30 【问题描述】:我想使用 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:.3fmV SignalStrength=-113+2*ssdBm "
f"Distance=distance "
f"Interrupt=interrupt")
【问题讨论】:
您可以对字符串中已知的字节应用相同的切片表示法。 我不明白,你能解释一下吗? 【参考方案1】:只需使用:data = data[0:14]
,您将拥有前 14 个字节。
不如按照你的方式解包
【讨论】:
以上是关于如何使用 python struct 包仅解包前 6 个字节的主要内容,如果未能解决你的问题,请参考以下文章
qt中如何解包利用python 的struct.pack()函数打包的数据
使用 struct.unpack_from() 解包混合二进制数据