Python 3 - используйте существующую строку HEX и запишите HEX в качестве необработанных данных - PullRequest
0 голосов
/ 08 ноября 2018

Пример (с использованием XVI32.exe (редактор HEX)):

Файл ASCII включает в себя 0001FF30

Ожидаемый результат (пробелы добавлены только для примера):

HEX - 00 01 FF 30 
DEC - 0 1 255 48

Существующие методы не являются битно-точными

# Write HEX as characters using bytearray
infile = open('input.txt', 'r')
infiledata = infile.read().strip()
infile.close()
outfile = open('output.txt', 'w')
outfile.write(bytearray.fromhex(infiledata).decode('latin1'))
outfile.close()

# Write HEX as characters using binascii
import binascii
infile = open('input.txt', 'r')
infiledata = infile.read().strip()
infile.close()
outfile = open('output.txt', 'w')
outfile.write(binascii.unhexlify(infiledata).decode('latin1'))
outfile.close()

Существует ли способ записи HEX непосредственно в файл, поддерживающий бит для точности битов (RAW Data)? Функция работает с использованием внешнего приложения XVI32.exe при использовании функции вставки из строки HEX. Я просто хотел сделать это в Python, чтобы сохранить шаг.

1 Ответ

0 голосов
/ 09 ноября 2018

Чтобы записать hexdump в двоичном виде, вам нужно удалить кодировку Latin-1 (кодировка означает , а не raw ) и вместо этого записать массив необработанных байтов (используя "b" "режим в open):

with open("input.txt", "r") as f:
    hexdump = f.read().strip()
with open("output.bin", "wb") as f:
    f.write(bytearray.fromhex(hexdump))

Для вашего примера ввода "0001FF30", это дает 4-байтовый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...