Как создать файл дампа в шестнадцатеричном формате из python

У меня есть массив целых чисел, который я хочу сбросить в один двоичный файл (в частности, файл HEX), используя скрипт python. Я написал код как

MemDump = Debug.readMemory(ic.IConnectDebug.fRealTime, 0, 0xB0009CC4, 0xCFF, 1)

    MemData = MemDump[:3321]
    # Create New file in binary mode and open for writing
    fp = open("MON.dmp", 'w')
    sys.stdout = fp
    for byte in MemData:
        print(byte)

Здесь MemDump содержит массив целочисленных значений. Из этого массива первые 3321 байт я хочу сбросить в файл. Здесь я получаю вывод в файле MON.dmp, но в формате ASCII. и если я создаю файл в двоичном формате, используя

fp = open("MON.dmp", 'wb')

команда print(byte) дает мне сообщение об ошибке

'str' does not support the buffer interface

Заранее спасибо.


person Pravin Virkud    schedule 10.08.2016    source источник


Ответы (1)


Вам нужно преобразовать byte в двоичную строку, прежде чем вы сможете записать ее в файл, открытый в режиме 'wb'. Это можно сделать с помощью функции bytearray(). Итак, в этом случае вы должны использовать:

for byte in MemData:
    print(bytearray(byte))
person Dartmouth    schedule 10.08.2016
comment
Функция bytes() тоже выдает ту же ошибку 'str' does not support the buffer interface - person Pravin Virkud; 11.08.2016
comment
fp.write(bytearray(MemData)) Это работает для меня. Получите ожидаемый результат. @Dartmouth: Спасибо за подсказку - person Pravin Virkud; 11.08.2016