La hex()
función en Python, coloca los caracteres principales 0x
delante del número. ¿Hay alguna forma de decirle que NO los ponga? Así 0xfa230
será 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')
0x
.Respuestas:
>>> format(3735928559, 'x') 'deadbeef'
fuente
deadbeef
ejemplo. Yformat()
es la mejor forma de hacerlo.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))
fuente
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 aformat(value, '..')
.f.write('{:x}'.format(hex(int(line))))
, diceValueError: zero length field name in format
format
necesita un int, no una cadena:f.write('{:x}'.format(int(line)))
Simplemente puedes escribir
hex(x)[2:]
para eliminar los dos primeros caracteres.
fuente
>>> hex(3735928559)[2:]
'deadbeefL'
x
es negativo.Python 3.6+:
>>> i = 240 >>> f'{i:02x}' 'f0'
fuente
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í.
fuente