2013-05-07 13 views
44

Funkcja hex() w pythonie umieszcza przed numerem znaki wiodące 0x. Czy mimo to powiedzieć NIE, aby je umieścić? Tak więc 0xfa230 będzie fa230.Jak używać funkcji hex() bez 0x w Pythonie?

Kod jest

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

Możesz wyciąć "0x". –

Odpowiedz

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

Uwielbiam przykład ole 'deadbeef'. A 'format()' jest najlepszym sposobem na zrobienie tego. –

+2

Argumentem w formacie powinno być 'int'. Dzięki – mahmood

+2

format (2976579765, "x") – Speccy

35

użyć tego kodu:

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

pozwala określić liczbę cyfr też:

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

dla Pythona 2.6 użytku

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

lub

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

Korzystanie z funkcji 'format()' jest łatwiejsze, nie używasz żadnej funkcji szablonów, tylko formatowanie. Jeśli cały twój szablon zawiera wartość '{: ..}' dla wartości * jeden *, zamiast tego przejdź do 'format (value, '..')'. –

+0

Korzystanie z 'f.write ('{: x}'. Format (hex (int (line))))), mówi' ValueError: nazwa pola o zerowej długości w formacie ' – mahmood

+0

' format' wymaga int, a nie string : 'f.write ('{: x}'. format (int (linia)))' – eumiro

4

Stary styl formatowania ciąg:

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

Nowy styl

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

Używanie wielkich liter jako znaków w formacie szesnastkowym daje wielkie litery

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

Docs są tutaj.

8

można po prostu napisać

hex(x)[2:] 

dostać dwa pierwsze znaki usunięte.

+0

Nie jest to bezpieczne w przypadku przyszłych zmian danych wyjściowych. –

+1

ale to było łatwe ... – mahmood

+1

Również w Pythonie 2 z długimi liczbami tworzy dziwne wyjście: '>>> hex (3735928559) [2:]' '' deadbeefL'' – jamylak