如何将 .bin 解析为列表?

How to parse .bin into list?

我有一个 .bin 文件。当我执行 hexdump

时得到以下输出
0000000 1ce7 0000 27d4 0006 0001 0251 202a 0100
0000010 0115 4067 6f09 0071 0071 0071 00c0 0100
0000020 0000 0000 0000 cf00 7750 2072 6e55 7469
....

我想解析这些字节并将它们中的每一个存储在一个列表中。

['1c', 'e7', '00', '00', '27', 'd4'.....,'69']

我不知道从哪里开始。是否需要先将.bin文件解析成文本文件,再插入列表?

这应该对你有帮助。

import binascii
filename = 'test.dat'
with open(filename, 'rb') as f:
    content = f.read()
print(binascii.hexlify(content))

之后,如果你想分开更多,只需附加到每 2 个十六进制的列表中。

编辑:这里是一个示例函数

def HexToByte( hexStr ):
    """
    Convert a string hex byte values into a byte string. The Hex Byte values may
    or may not be space separated.
    """
    # The list comprehension implementation is fractionally slower in this case    
    #
    #    hexStr = ''.join( hexStr.split(" ") )
    #    return ''.join( ["%c" % chr( int ( hexStr[i:i+2],16 ) ) \
    #                                   for i in range(0, len( hexStr ), 2) ] )

    bytes = []

    hexStr = ''.join( hexStr.split(" ") )

    for i in range(0, len(hexStr), 2):
        bytes.append( chr( int (hexStr[i:i+2], 16 ) ) )

    return ''.join( bytes )

获取字节作为十六进制字符串列表:

>>> ['%02x' % d for d in bytearray(b'\x1c\xe7\x00\x00\x27\xd4')]
['1c', 'e7', '00', '00', '27', 'd4']

以下是从文件中读取字节的方法:

with open(filename, 'rb') as file:
    data = file.read()
    hex_list = ['%02x' % d for d in bytearray(data)]

在 Python 3 上,bytearray() 调用是可选的。