繁体   English   中英

Python 3.8 结构解包 - struct.error: 解包需要 1 个字节的缓冲区

[英]Python 3.8 Struct unpacking - struct.error: unpack requires a buffer of 1 bytes

我正在尝试在 Python 3.8 中解压缩 python 结构并出现错误

类型错误:需要类似字节的 object,而不是 'int'

. 相同的代码在 Python 2.7 中工作正常

import struct
hexval= b'J\xe6\xe7\xa8\x002\x10k\x05\xd4\x7fA\x00\x04\n\x90\x1a\n'

aaT = struct.unpack('>H',hexval[4:6])
aa = aaT[0] 
print("aa",aa)                      

bbT = struct.unpack(">B",hexval[12])
bb = bbT[0]&0x3      # just lower 2 bits
print("bb",bb)

Output:

AA 50

回溯(最后一次调用):文件“./sample.py”,第 9 行,在 bbT = struct.unpack(">B",hexval[12]) '

当我转换为字节

我得到这样的错误。

Traceback(最近一次调用最后一次):文件“sample.py”,第 9 行,在 bbT = struct.unpack(">B",bytes(hexval[12])) struct.error: unpack 需要 1 个字节的缓冲区

我怎样才能解压这个二进制数据

这是与从 Python 2 到 3 的数据类型相关的另一个变化。原因在为什么我在索引字节时得到一个 int 的答案中进行了解释。

万一答案不明显,要获得与 Python 2 中相同的结果,请改为执行以下操作:

bbT = struct.unpack(">B",hexval[12:13]) # slicing a byte array results in a byte array, same as Python 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM