Wie verwende ich hex () ohne 0x in Python?


86

Die hex()Funktion in Python setzt die führenden Zeichen 0xvor die Zahl. Gibt es sowieso zu sagen, sie NICHT zu setzen? So 0xfa230wird es sein fa230.

Der Code ist

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

2
Sie können die schneiden 0x.
Ashwini Chaudhary

2
@ AshwiniChaudhary Ich denke, er fragt im Wesentlichen, wie man die 0x
Mine

Antworten:


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

34
Ich muss das alte deadbeefBeispiel lieben . Und format()ist der beste Weg, dies zu tun.
Martijn Pieters

56

Verwenden Sie diesen Code:

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

Hier können Sie auch eine Reihe von Ziffern angeben:

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

Für Python 2.6 verwenden

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

oder

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

8
Die Verwendung der format()Funktion ist einfacher, Sie verwenden keine Vorlagenfunktion, sondern nur die Formatierung. Wenn alle Ihre Vorlage enthält , ist {:..}für einen Wert bewegen , format(value, '..')statt.
Martijn Pieters

Mit f.write('{:x}'.format(hex(int(line)))), heißt esValueError: zero length field name in format
Mahmood

formatbraucht ein int, kein string:f.write('{:x}'.format(int(line)))
eumiro

17

Sie können einfach schreiben

hex(x)[2:]

um die ersten beiden Zeichen zu entfernen.


2
Dies ist nicht sicher gegen zukünftige Änderungen der Ausgabe.
Stefano Sanfilippo

1
Auch in Python 2 mit langen Zahlen erzeugt es seltsame Ausgabe:>>> hex(3735928559)[2:] 'deadbeefL'
Jamylak

@esseks: Ich bezweifle, dass sie das Ausgabeformat vor der nächsten Hauptversion ändern werden. Sie werden sowieso andere Inkompatibilitäten haben.
Janus Troelsen

8
Dies wird unterbrochen, wenn xes negativ ist.
DSM


7

Formatierung von Zeichenfolgen im alten Stil:

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

Neuer Stil

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

Die Verwendung von Großbuchstaben als Formatzeichen ergibt hexadezimale Großbuchstaben

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

Docs sind hier.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.