Как использовать hex () без 0x в Python?

93

hex()Функция питона, ставит ведущие символы 0xперед номером. Есть ли способ сказать, что НЕ ставить их? Так 0xfa230и будет fa230.

Код

import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
   f.write(hex(int(line)))
   f.write('\n')
Махмуд
источник
2
Вы можете нарезать 0x.
Ашвини Чаудхари,
3
@AshwiniChaudhary Я думаю, он, по сути, спрашивает, как нарезать 0x
Mine

Ответы:

187
>>> format(3735928559, 'x')
'deadbeef'
Джамылак
источник
34
Должен полюбить старый deadbeefпример. И format()это лучший способ сделать это.
Мартейн Питерс
58

Используйте этот код:

'{:x}'.format(int(line))

он также позволяет вам указать количество цифр:

'{:06x}'.format(123)
# '00007b'

Для Python 2.6 используйте

'{0:x}'.format(int(line))

или

'{0:06x}'.format(int(line))
Eumiro
источник
8
Использовать эту format()функцию проще, вы не используете никаких шаблонов, а только форматирование. Если весь ваш шаблон содержит это {:..}для одного значения, перейти format(value, '..')вместо этого.
Мартейн Питерс
Используется f.write('{:x}'.format(hex(int(line)))), там написаноValueError: zero length field name in format
Махмуд
formatнужен int, а не строка:f.write('{:x}'.format(int(line)))
eumiro
17

Вы можете просто написать

hex(x)[2:]

чтобы удалить первые два символа.

Гийом Лемэтр
источник
3
Это небезопасно от будущих изменений вывода.
Стефано Санфилиппо
2
Также в Python 2 с длинными числами он производит странный вывод:>>> hex(3735928559)[2:] 'deadbeefL'
jamylak
@esseks: Я сомневаюсь, что они изменят выходной формат до следующего крупного релиза. В любом случае у вас будут другие несовместимости.
Янус Трольсен
9
Это сломается, если xбудет отрицательным.
DSM
14

Python 3.6+:

>>> i = 240
>>> f'{i:02x}'
'f0'
Гринго Вежливый
источник
7

Форматирование строк в старом стиле:

In [3]: "%02x" % 127
Out[3]: '7f'

Новый стиль

In [7]: '{:x}'.format(127)
Out[7]: '7f'

Использование заглавных букв в качестве символов формата дает прописные шестнадцатеричные числа

In [8]: '{:X}'.format(127)
Out[8]: '7F'

Документы здесь.

мсвалкон
источник