我有一个.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文件解析为文本文件,然后插入列表?
答案 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()
调用是可选的。