2013-04-12 3 views
3

яКак печатать двоичный файл в виде байтов?

>>> 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: можно напечатать его довольно как

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

или двоеточиями?.)

+1

'string.encode ('hex')'? :) – 2013-04-12 06:50:31

+4

@Allendar - нет, в pyhon3 это не работает. 'binascii.hexlify' – mata

ответ

4
>>> 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' 
+0

Я нашел это в другом ответе. Это косвенно. Есть ли способ установить некоторую переменную среды, чтобы байты были напечатаны как есть? –

+0

И '0' напечатаны как' 0', а не '00', например. Я получил что-то вроде «1 0 F2 5 2A 1 0 0 0 43 41 4 96', что не так хорошо. –

+0

@hyh: Это исправлено. – NPE

Смежные вопросы