A hex()
função em python coloca os caracteres principais 0x
antes do número. Existe alguma maneira de dizer para NÃO colocá-los? Assim 0xfa230
será fa230
.
O código é
import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
f.write(hex(int(line)))
f.write('\n')
0x
.Respostas:
>>> format(3735928559, 'x') 'deadbeef'
fonte
deadbeef
exemplo. Eformat()
é a melhor maneira de fazer isso.c0ffee = format(12648430, 'x')
. Em Python3.8 é o exemplo padrão para hexadecimal.Use este código:
'{:x}'.format(int(line))
ele permite que você especifique um número de dígitos também:
'{:06x}'.format(123) # '00007b'
Para Python 2.6, use
'{0:x}'.format(int(line))
ou
'{0:06x}'.format(int(line))
fonte
format()
função é mais fácil, você não está usando nenhuma funcionalidade de template, apenas formatação. Se tudo que o seu modelo contém for{:..}
para um valor, vá paraformat(value, '..')
.f.write('{:x}'.format(hex(int(line))))
, dizValueError: zero length field name in format
format
precisa de um int, não de uma string:f.write('{:x}'.format(int(line)))
Você pode simplesmente escrever
hex(x)[2:]
para remover os primeiros dois personagens.
fonte
>>> hex(3735928559)[2:]
'deadbeefL'
x
for negativo.Python 3.6+:
>>> i = 240 >>> f'{i:02x}' 'f0'
fonte
Formatação de string de estilo antigo:
In [3]: "%02x" % 127 Out[3]: '7f'
Novo estilo
In [7]: '{:x}'.format(127) Out[7]: '7f'
Usar letras maiúsculas como caracteres de formato resulta em hexadecimal maiúsculo
In [8]: '{:X}'.format(127) Out[8]: '7F'
Os documentos estão aqui.
fonte