首页 > 解决方案 > 如何使用 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}")

标签: pythonstructhex

解决方案


只需使用:data = data[0:14]您将拥有前 14 个字节.. 比按照您的方式解压


推荐阅读