Python 3.x 转换二进制文件<;某物>;从十六进制字节到十进制值列表

Python 3.x 转换二进制文件<;某物>;从十六进制字节到十进制值列表,python-3.x,binary,hex,Python 3.x,Binary,Hex,我有以下二进制文件(某物): 每两位数字是我想要的十六进制数,因此下面的内容比上面的更清楚: test = b'40 00 00 00 11 1E 0C 09' 0x40 = 64 in decimal 0x00 = 0 in decimal 0x11 = 17 in decimal 0x1E = 30 in decimal 你明白了 如何使用struct.unpack(fmt,binary)获取值?我询问struct.unpack(),因为它变得更复杂了。。。我有一个4字节的小整数在里面。

我有以下二进制文件(某物):

每两位数字是我想要的十六进制数,因此下面的内容比上面的更清楚:

test = b'40 00 00 00 11 1E 0C 09'

0x40 = 64 in decimal
0x00 = 0 in decimal
0x11 = 17 in decimal
0x1E = 30 in decimal
你明白了

如何使用
struct.unpack(fmt,binary)
获取值?我询问struct.unpack(),因为它变得更复杂了。。。我有一个4字节的小整数在里面。。。最后四个字节是:

b'11 1E 0C 09'
假设是小尾数,上面的十进制数是多少


非常感谢!这实际上来自CAN总线,我将其作为串行端口访问(令人沮丧的东西)

假设您有字符串
b'40000000111E0C09'
,您可以使用带有十六进制参数的
codecs.decode()
将其解码为字节形式:

import struct
from codecs import decode
test = b'40000000111E0C09'
test_decoded = decode(test, 'hex') # from hex string to bytes

for i in test_decoded:
    print('{:#04x} {}'.format(i, i))
印刷品:

0x40 64
0x00 0
0x00 0
0x00 0
0x11 17
0x1e 30
0x0c 12
0x09 9
(151789073,)
要将最后四个字节作为UINT32(小尾端),可以执行以下操作()


这很漂亮,正是我需要的。我喜欢你先编辑了我的问题,让它更容易阅读,然后如此熟练地回答:)
print( struct.unpack('<I', test_decoded[-4:]) )
(151789073,)