Я пытаюсь записать одно-шестнадцатеричное значение, скажем «F» в файл:

a = int('F', 16)
f.write(chr(a))

Однако этот фрагмент кода дает мне файл с 0F. Я просто хочу один гекс F в моем файле. Я знаю, что это потому, что символ представлен байтом, есть ли способ напрямую записать шестнадцатеричное значение без пэда?

1
Abundance 18 Дек 2015 в 03:46

3 ответа

Лучший ответ

То, что вы пытаетесь сделать, невозможно в большинстве современных операционных систем. Наименьший блок данных, который может обрабатывать вычислительная платформа общего назначения, - это один байт.

Посмотрите эту вики-статью для получения дополнительной информации, где в ней говорится: «Исторически, байт был числом битов, используемых для кодирования одного символа текста в компьютере, и по этой причине это самая маленькая адресуемая единица памяти во многих компьютерных архитектурах».

1
Brian Cain 18 Дек 2015 в 01:51

Используйте форматирование строк:

 f.write("{:X}".format(a))

Он будет записан как F:

 >>> "{:X}".format(a)
 'F'
2
BigOther 18 Дек 2015 в 00:50

Вы можете использовать модуль struct для записи необработанных данных в файл. Это запишет один байт в файл

open('file','wb').write(struct.pack('b', 0xf))
1
tdelaney 18 Дек 2015 в 01:02