Python'da 0x olmadan hex () nasıl kullanılır?


93

hex()Python fonksiyonu, lider karakterleri koyar 0xnumaranın önüne. Bunları koymamasını söylemenin bir yolu var mı? Öyle 0xfa230olacak fa230.

Kod

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

2
Sen dilim 0x.
Ashwini Chaudhary

3
@AshwiniChaudhary Bence o aslında 0x'in nasıl kesileceğini soruyor
Mine

Yanıtlar:


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

34
Ole deadbeeförneğini sevmelisin . Ve format()bunu yapmanın en iyi yolu.
Martijn Pieters

58

Bu kodu kullanın:

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

bir dizi basamak belirlemenize de olanak tanır:

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

Python 2.6 kullanımı için

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

veya

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

8
format()İşlevi kullanmak daha kolaydır, herhangi bir şablon işlevi kullanmazsınız, yalnızca biçimlendirme kullanırsınız. Senin şablon içerdiği tüm ise {:..}için bir değere taşımak format(value, '..')yerine.
Martijn Pieters

Kullanarak f.write('{:x}'.format(hex(int(line))))diyor kiValueError: zero length field name in format
mahmood

formatdizeye değil, bir int'e ihtiyaç duyar:f.write('{:x}'.format(int(line)))
eumiro

17

Basitçe yazabilirsin

hex(x)[2:]

ilk iki karakteri kaldırmak için.


3
Bu, çıktının gelecekteki değişikliklerine karşı güvenli değildir.
Stefano Sanfilippo

2
Ayrıca uzun sayılarla Python 2'de tuhaf >>> hex(3735928559)[2:] 'deadbeefL'
çıktılar

@esseks: Bir sonraki büyük sürümden önce çıktı formatını değiştireceklerinden şüpheliyim. Yine de başka uyumsuzluklarınız olacak.
Janus Troelsen

9
xNegatif ise bu kırılacaktır .
DSM


7

Eski stil dize biçimlendirmesi:

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

Yeni stil

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

Biçim karakterleri olarak büyük harflerin kullanılması büyük harf onaltılık verir

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

Dokümanlar burada.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.