【问题标题】:How to parse .bin into list?如何将 .bin 解析为列表?
【发布时间】:2015-10-16 14:52:23
【问题描述】:

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

【问题讨论】:

    标签: python list hexdump


    【解决方案1】:

    这应该对你有帮助。

    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 )
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-25
        • 2019-10-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多