如何解析.bin到列表?

时间:2015-10-16 14:52:23

标签: python list hexdump

我有一个.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文件解析为文本文件,然后插入列表?

2 个答案:

答案 0 :(得分:2)

这应该对你有帮助。

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 )

答案 1 :(得分:1)

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

>>> ['%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()调用是可选的。