¿Cómo usar hex () sin 0x en Python?

92

La hex()función en Python, coloca los caracteres principales 0xdelante del número. ¿Hay alguna forma de decirle que NO los ponga? Así 0xfa230será fa230.

El codigo es

import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
   f.write(hex(int(line)))
   f.write('\n')
Mahmood
fuente
2
Puede cortar el 0x.
Ashwini Chaudhary
3
@AshwiniChaudhary Creo que esencialmente está preguntando cómo cortar el 0x
Mine

Respuestas:

185
>>> format(3735928559, 'x')
'deadbeef'
Jamylak
fuente
34
Me encanta el viejo deadbeefejemplo. Y format()es la mejor forma de hacerlo.
Martijn Pieters
58

Utilice este código:

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

también le permite especificar un número de dígitos:

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

Para uso de Python 2.6

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

o

'{0:06x}'.format(int(line))
eumiro
fuente
8
Usar la format()función es más fácil, no está usando ninguna funcionalidad de plantillas, solo formateo. Si todo lo que contiene tu plantilla es {:..}para un valor, muévete a format(value, '..').
Martijn Pieters
Usando f.write('{:x}'.format(hex(int(line)))), diceValueError: zero length field name in format
mahmood
formatnecesita un int, no una cadena:f.write('{:x}'.format(int(line)))
eumiro
17

Simplemente puedes escribir

hex(x)[2:]

para eliminar los dos primeros caracteres.

Guillaume Lemaître
fuente
3
Esto no es seguro contra cambios futuros de la salida.
Stefano Sanfilippo
2
También en Python 2 con números largos produce un resultado extraño:>>> hex(3735928559)[2:] 'deadbeefL'
jamylak
@esseks: Dudo que cambien el formato de salida antes de la próxima versión principal. De todos modos, tendrá otras incompatibilidades.
Janus Troelsen
9
Esto se romperá si xes negativo.
DSM
14

Python 3.6+:

>>> i = 240
>>> f'{i:02x}'
'f0'
Gringo Suave
fuente
7

Formato de cadena de estilo antiguo:

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

Nuevo estilo

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

El uso de letras mayúsculas como caracteres de formato produce hexadecimal en mayúsculas

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

Los documentos están aquí.

msvalkon
fuente