spojrzeć na to:Python, Drukowanie Hex usuwa pierwsze 0?
fc = '0x'
for i in b[0x15c:0x15f]:
fc += hex(ord(i))[2:]
Powiedzmy ten kod znalazł hex 00 04 0F, zamiast pisać to w ten sposób, że usuwa pierwszy 0, i pisze: 04F pomocy?
spojrzeć na to:Python, Drukowanie Hex usuwa pierwsze 0?
fc = '0x'
for i in b[0x15c:0x15f]:
fc += hex(ord(i))[2:]
Powiedzmy ten kod znalazł hex 00 04 0F, zamiast pisać to w ten sposób, że usuwa pierwszy 0, i pisze: 04F pomocy?
Dzieje się tak dlatego, hex()
nie będzie zawierać żadnych zer, na przykład:
>>> hex(15)[2:]
'f'
Aby upewnić się zawsze dwa znaki, można użyć str.zfill()
dodać zerem gdy jest to konieczne:
>>> hex(15)[2:].zfill(2)
'0f'
Oto wha t to będzie wyglądać w kodzie:
fc = '0x'
for i in b[0x15c:0x15f]:
fc += hex(ord(i))[2:].zfill(2)
print ["0x%02x"%ord(i) for i in b[0x15c:0x15f]]
użycie ciąg formatu "%2x"
informuje go, aby go sformatować za 2 znaki szerokie, podobnie "%02x"
informuje go do podkładki z 0 za
pamiętać, że będzie to jeszcze usunąć wiodącym 0 na od rzeczy z więcej niż 2 wartości szesnastkowe: np .: "0x%02x"%0x0055 => "0x55"
To wciąż tylko graficzne przedstawienie dla Twojej wygody.
Wartość nie jest faktycznie usunięta z danych, jest tylko wizualnie skrócona.
Pełny opis tutaj i dlaczego to jest i dlaczego to nie jest ważne: Why are hexadecimal numbers prefixed with 0x?
nie, to jest usuwany z danymi, próbowałem drukowania wyjście, a to daje różne wartości, 04F jest zbyt dużo inny niż 00040f – thethiny
>>> map("{:02x}".format, (10, 13, 15))
['0a', '0d', '0f']
To jest bardziej pythonic niż najbardziej upvoted odpowiedź! +1! – Antonvh
'dla I, b [0x15c: 0x15f] \t \t H = sześciokątną (ORD (I)) [2:] \t \t jeśli len (H) = 2: h = '0' + H \t \t FC + = h; ' Znajomy powiedział, że to zadziała – thethiny
Nareszcie właściwie objaśniony działający przykład na thi s! – monojohnny
Nie powiedziałbym, że jest odpowiednio wyjaśniony i nie jestem najlepszy do wyjaśnienia. Ignoruje początkowe zera, ponieważ nie mają one nic wspólnego z wartością dziesiętną wartości szesnastkowych. Wskazują liczbę bajtów, które wartości przyjmują. 15 = f. 0f = 15, ponieważ 0 + 15 to 15 –