Come usare hex () senza 0x in Python?


92

La hex()funzione in python mette i caratteri iniziali 0xdavanti al numero. C'è comunque da dirgli di NON metterli? Così 0xfa230sarà fa230.

Il codice è

import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
   f.write(hex(int(line)))
   f.write('\n')

2
Puoi tagliare il file 0x.
Ashwini Chaudhary

3
@AshwiniChaudhary Penso che stia essenzialmente chiedendo come tagliare lo 0x
mio

Risposte:


185
>>> format(3735928559, 'x')
'deadbeef'

34
Devo amare il vecchio deadbeefesempio. Ed format()è il modo migliore per farlo.
Martijn Pieters

58

Usa questo codice:

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

ti permette di specificare anche un numero di cifre:

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

Per Python 2.6 usare

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

o

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

8
Usare la format()funzione è più semplice, non stai usando alcuna funzionalità di template, solo formattazione. Se tutto il tuo modello contiene è {:..}per un valore, passa a format(value, '..').
Martijn Pieters

Utilizzando f.write('{:x}'.format(hex(int(line)))), diceValueError: zero length field name in format
mahmood

formatha bisogno di un int, non di una stringa:f.write('{:x}'.format(int(line)))
eumiro

17

Puoi semplicemente scrivere

hex(x)[2:]

per rimuovere i primi due caratteri.


3
Questo non è sicuro contro future modifiche dell'output.
Stefano Sanfilippo

2
Anche in Python 2 con numeri lunghi produce strani risultati:>>> hex(3735928559)[2:] 'deadbeefL'
jamylak

@esseks: dubito che cambieranno il formato di output prima della prossima major release. Avrai comunque altre incompatibilità.
Janus Troelsen

9
Questo si romperà se xè negativo.
DSM


7

Formattazione stringa vecchio stile:

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

Nuovo stile

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

L'utilizzo di lettere maiuscole come caratteri di formato produce caratteri esadecimali maiuscoli

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

I documenti sono qui.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.