2013-05-07 5 views
44

Die -Funktion in Python, setzt die führenden Zeichen 0x vor der Nummer. Gibt es überhaupt etwas, um es NICHT zu sagen? So wird 0xfa230fa230 sein.Wie verwende ich hex() ohne 0x in Python?

Der Code ist

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

Sie können die '0x' schneiden. –

Antwort

93
>>> format(3735928559, 'x') 
'deadbeef' 
+24

Ich liebe das ole 'deadbeef' Beispiel. Und 'format()' ist der beste Weg, dies zu tun. –

+2

Das Argument im Format sollte "int" sein. Danke – mahmood

+2

Format (2976579765, "x") – Speccy

35

Mit diesem Code:

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

es Ihnen eine Reihe von Ziffern angeben können:

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

für Python 2.6 verwenden

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

oder

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

Die 'format()' -Funktion ist einfacher, Sie verwenden keine Template-Funktionen, nur Formatierung. Wenn alle Ihre Vorlage enthält '{. ..}' für * one * -Wert, verschieben Sie stattdessen zu 'Format (Wert, '..')' '. –

+0

Mit 'f.write ('{: x}'. Format (hex (int (line))))', es sagt 'ValueError: Null Länge Feldname im Format' – mahmood

+0

' Format' benötigt ein int, keine Zeichenfolge : 'f.write ('{: x}'. format (int (line)))' – eumiro

4

Old style String-Formatierung:

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

neue Art

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

Mit Großbuchstaben als Format Zeichen liefert Groß hexadezimal

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

Docs sind hier.

8

können Sie einfach schreiben

hex(x)[2:] 

entfernt die ersten beiden Zeichen zu erhalten.

+0

Dies ist nicht sicher gegen zukünftige Änderungen der Ausgabe. –

+1

aber es war einfach .... – mahmood

+1

Auch in Python 2 mit langen Zahlen produziert es seltsam Ausgang: '>>> hex (3735928559) [2:]' ''deadbeefL'' – jamylak