2013-02-03 15 views
46

Ondalık, onaltılık biçemi aşağıdaki biçimde nasıl dönüştürülür (en az iki basamak, sıfır önekli, 0x öneki olmadan)?Python Onaltılık

Girdi: 255 Çıktı: ff

Girdi: 2 Çıktı:

02 Ben hex(int)[2:] denedik ama ilk örneği değil ikinciyi görüntüler gibi görünüyor.

+0

[size denedi ne?] (http://whathaveyoutried.com) Bu soruyu downvoted Neden: http://meta.stackexchange.com/a/149138/133242 –

+0

Onaltılık denedim (int) [2 :] fakat ilk örneği görüntülediği, ancak ikinci örneği görmediği anlaşılıyor. –

+0

Anladım! Teşekkürler –

cevap

104

'02x' biçimi ile format() function kullanın.

>>> format(255, '02x') 
'ff' 
>>> format(2, '02x') 
'02' 

02 kısım x küçük harf onaltılık anlamına gelir, format() en az 2 basamak kullanımı ve uzunluğuna göre ped bunu için sıfır kullanılabilir anlatır.

Format Specification Mini Language da büyük heks çıkışı için X verir ve (eğer x veya X biçimlendirici olarak kullanılan Hava bağlı olarak) bir 0x veya 0X ön eke # ile alan genişliği önek.

>>> format(255, '02X') 
'FF' 
>>> format(255, '#04x') 
'0xff' 
>>> format(255, '#04X') 
'0XFF' 
+0

Teşekkürler! İyi açıklama. –

+0

Onaltılık önek, büyük harf hex çıktısını kullanacak biçimde ayarlanmışsa, bir "X" sermayeye sahip olacak bir sorun yaşıyorum. Bu örnekte böyle görünmüyor. Bu sadece Python'un yerel sürümüyle ilgili bir sorun mu? 2.7.9 sürümünü kullanıyorum. – jwp36

+0

@ jwp36: Hayır, yanıtımdaki bir hataydı, düzeltildi. Özür dilerim. –

15

Bunun istediğini düşünüyorum: Sadece bu ekstra 2 karakterler için izin alan genişliğini ayarlamak gerektiğini dikkate almak

>>> def twoDigitHex(number): 
...  return '%02x' % number 
... 
>>> twoDigitHex(2) 
'02' 
>>> twoDigitHex(255) 
'ff' 
-7

ilk cevap en iyisidir, ancak bir arkaik cevabı ancak sahip fonksiyonel

>>> "".join(list(hex(255))[2:]) 
'ff' 
+2

Başka bir cevapla aynı şekilde, bu sıfırlama pedi yok. Örneğin, "" ".join (liste (hex (2)) [2:])' '2'' değil, '' 02 '' olarak değerlendirir. – therealrootuser

+1

Bu, 'hex (int) [2:]' ile aynı anlama gelir. Neden tekrar katılmak için bir liste hazırlıyorsun? – wjandrea

+0

Zaten daha iyi bir tane olduğuna katılıyorsanız, bu cevabı neden göndersiniz? – ryry1985