解包 4 字节 class 给出解包错误

unpacking a 4-byte class gives a unpacking error

我正在尝试解码字节对象,但出现错误,即使对象是 4 个字节的字节 class。

我在叫什么:

struct.unpack('>f', reg_hex[2:10])[0]

如果我打印 reg_hex[2:10]:

的值
print("reg_hex: {}".format(reg_hex[2:10]))

    reg_hex: b'3a8a1b45'

如果我打印类型 reg_hex[2:10]:

print("reg_hex: {}".format(type(reg_hex[2:10])))
    reg_hex: <class 'bytes'>

所以 reg_hex 是一个字节 class 的 4 个字节,但是 struct.unpack 似乎对此并不满意。

我是不是做错了什么?

那些是 8 个字节,而不是 4 个。它们是 3a、...等字符

您需要先将十六进制转换为实际字节。例如:

bindata = bytes(int(reg_hex[i:i+2], 16) for i in range(0, reg_hex(x), 2))