【发布时间】:2020-05-11 01:53:47
【问题描述】:
我试图在 Python 3.8 中解压 python 结构并得到错误
TypeError: 需要一个类似字节的对象,而不是 '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)
输出:
aa 50
Traceback(最近一次调用最后一次): 文件“./sample.py”,第 9 行,在 bbT = struct.unpack(">B",hexval[12]) TypeError:需要一个类似字节的对象,而不是'int'
当我转换为字节时
我得到这样的错误。
Traceback(最近一次调用最后一次):文件“sample.py”,第 9 行,在 bbT = struct.unpack(">B",bytes(hexval[12])) struct.error: unpack 需要 1 个字节的缓冲区
如何解压这个二进制数据
【问题讨论】:
-
这能回答你的问题吗? Why do I get an int when I index bytes?
-
@MarkMeyer 没有回答这个问题。它只是解释了字节对象是如何工作的。
标签: python python-3.x struct binary