Bagaimana cara menggunakan hex () tanpa 0x dengan Python?

93

The hex()fungsi dalam python, menempatkan karakter terkemuka 0xdi depan nomor. Apakah ada cara untuk memberitahukannya agar TIDAK menempatkannya? Begitu 0xfa230juga fa230.

Kodenya adalah

import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
   f.write(hex(int(line)))
   f.write('\n')
mahmood
sumber
2
Anda bisa mengiris 0x.
Ashwini Chaudhary
3
@AshwiniChaudhary Saya pikir dia pada dasarnya bertanya bagaimana cara memotong 0x
Mine

Jawaban:

187
>>> format(3735928559, 'x')
'deadbeef'
jamylak
sumber
34
Harus menyukai deadbeefcontoh ole . Dan format()merupakan cara terbaik untuk melakukan ini.
Martijn Pieters
58

Gunakan kode ini:

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

ini memungkinkan Anda untuk menentukan sejumlah digit juga:

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

Untuk penggunaan Python 2.6

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

atau

'{0:06x}'.format(int(line))
eumiro
sumber
8
Menggunakan format()fungsi ini lebih mudah, Anda tidak menggunakan fungsionalitas pembuatan kerangka, hanya pemformatan. Jika semua template Anda berisi {:..}untuk satu nilai, pindahlah ke format(value, '..').
Martijn Pieters
Menggunakan f.write('{:x}'.format(hex(int(line)))), tertulisValueError: zero length field name in format
mahmood
formatmembutuhkan int, bukan string:f.write('{:x}'.format(int(line)))
eumiro
17

Anda cukup menulis

hex(x)[2:]

untuk menghapus dua karakter pertama.

Guillaume Lemaître
sumber
3
Ini tidak aman terhadap perubahan output di masa mendatang.
Stefano Sanfilippo
2
Juga di Python 2 dengan angka panjang menghasilkan ouput aneh:>>> hex(3735928559)[2:] 'deadbeefL'
jamylak
@esseks: Saya ragu mereka akan mengubah format output sebelum rilis utama berikutnya. Anda akan memiliki ketidakcocokan lain.
Janus Troelsen
9
Ini akan rusak jika xnegatif.
DSM
14

Python 3.6+:

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

Pemformatan string gaya lama:

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

Gaya baru

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

Menggunakan huruf kapital sebagai karakter format menghasilkan heksadesimal huruf besar

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

Dokumen ada di sini.

msvalkon.dll
sumber