如何将二进制文件打印为字节?

6

我做了

>>> b0 = open('file','rb')

那么,
>>> b0.read(10)

提供

b'\xb8\xaaK\x1e^J)\xab_I'

我该如何将所有内容以纯十六进制字节的形式打印出来?我想要
b'\xb8\xaa\x4b\x1e\x5e\x4a\x29\xab\x5f\x49'

(PS: is it possible to print it pretty? like

B8 AA 4B 1E 5E 4A 29 AB 5F 49

(可以用冒号分隔。)

2
string.encode('hex')? :) - user1467267
4
@Allendar - 不行,在Python3中这样做不起作用。binascii.hexlify - mata
1个回答

6
>>> s = b'\xb8\xaaK\x1e^J)\xab_I'
>>> ' '.join('{:02X}'.format(c) for c in s)
'B8 AA 4B 1E 5E 4A 29 AB 5F 49'

或者更简洁地说:
>>> ' '.join(map('{:02X}'.format, s))
'B8 AA 4B 1E 5E 4A 29 AB 5F 49'

我在另一个答案中找到了这个。它有点间接。是否有一种方法可以设置某些环境变量,以便字节按原样打印? - h__
而且 0 会被打印成 0,而不是 00,例如我得到的类似于 1 0 F2 5 2A 1 0 0 0 43 41 4 96 的东西并不好。 - h__

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接