【问题标题】:unpacking a 4-byte class gives a unpacking error解包 4 字节的类会导致解包错误
【发布时间】:2019-12-22 18:16:33
【问题描述】:

我正在尝试解码一个字节对象,但我遇到了一个错误,即使对象是 4 个字节的字节类。

我在叫什么:

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 是一个 4 字节的字节类,但是 struct.unpack 似乎对此并不满意。

我做错了吗?

【问题讨论】:

    标签: python-3.x decoding unpack


    【解决方案1】:

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

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

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

    【讨论】:

    • 那我该怎么做呢?
    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多