在Python 3中将字节转换为可读字符串

时间:2014-02-04 02:35:03

标签: python hex byte bytearray

我有一个保存数据的.bin文件,但是我不确定格式或编码是什么。我希望能够将数据转换为可读的内容。格式化不是问题,我可以稍后再这样做。

我的问题是解析文件。我试过使用struct,binascii和编解码器而没有这样的运气。

with open(sys.argv[1], 'rb') as f:
    data = f.read()
    lists = list(data)


    # Below returns that each item is class 'bytes' and a number that appears to be <255
    # However, if I add type(i) == bytes it spits an error
    for i in lists:
        print("Type: ", type(data))
        print(i, "\n")

    # Below returns that the class is 'bytes' and prints like this: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x07\x00\x00\x0b\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08@\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0=\xa1D\xc0\x00\x00\x00\x00t\xdfe@
    # To my knowledge, this looks like hex notation. 
    print("Data type: ", type(data))
    print(data)

然而,应该有一些东西将它转换成我能读的字符,即用字符串表示的字母或数字。我似乎过于复杂化,因为我确信这是一种难以捉摸的内置方法。

1 个答案:

答案 0 :(得分:1)

使用binascii.hexlify

>>> import binascii
>>> binascii.hexlify(b'\x00t\xdfe@')
b'0074df6540'