Jak używać hex () bez 0x w Pythonie?


93

hex()Funkcja w Pythonie, kładzie wiodące znaki 0xprzed numerem. Czy w ogóle można powiedzieć, że NIE ma ich umieszczać? Tak 0xfa230będzie fa230.

Kod to

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

2
Możesz pokroić 0x.
Ashwini Chaudhary

3
@AshwiniChaudhary Myślę, że zasadniczo pyta, jak pokroić 0x
Mine

Odpowiedzi:


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

34
Muszę pokochać ten deadbeefprzykład. I format()to najlepszy sposób na zrobienie tego.
Martijn Pieters

58

Użyj tego kodu:

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

pozwala również na podanie liczby cyfr:

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

W przypadku Pythona 2.6 użyj

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

lub

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

8
Korzystanie z format()funkcji jest łatwiejsze, nie używasz żadnej funkcji tworzenia szablonów, a jedynie formatowanie. Jeśli wszystko zawiera szablon jest {:..}dla jednej wartości, przejść do format(value, '..')zamiast.
Martijn Pieters

Używając f.write('{:x}'.format(hex(int(line)))), mówiValueError: zero length field name in format
mahmood

formatpotrzebuje int, a nie string:f.write('{:x}'.format(int(line)))
eumiro

17

Możesz po prostu napisać

hex(x)[2:]

aby usunąć pierwsze dwa znaki.


3
Nie jest to zabezpieczone przed przyszłymi zmianami mocy wyjściowej.
Stefano Sanfilippo

2
Również w Pythonie 2 z długimi liczbami daje dziwny wynik:>>> hex(3735928559)[2:] 'deadbeefL'
jamylak

@esseks: Wątpię, czy zmienią format wyjściowy przed następnym głównym wydaniem. I tak będziesz mieć inne niezgodności.
Janus Troelsen

9
To pęknie, jeśli xjest ujemne.
DSM


7

Formatowanie ciągów w starym stylu:

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

Nowy styl

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

Użycie wielkich liter jako znaków formatu daje wielkie litery szesnastkowe

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

Dokumenty są tutaj.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.