2012-09-28 63 views
32

मैं इस साधारण समारोह लिखासजावट हेक्स पैड शून्य करने के लिए समारोह

padded_hex(42,4) # result '0x002a' 
hex(15) # result '0xf' 
padded_hex(15,1) # result '0xf' 

जबकि यह मेरे लिए काफी स्पष्ट है और एक के लिए अपने प्रयोग के मामले में (एक साधारण परीक्षण उपकरण फिट बैठता है सरल प्रिंटर) मैं सोचने में मदद नहीं कर सकता कि वहां सुधार के लिए बहुत सी जगह है और इसे बहुत संक्षेप में बंद कर दिया जा सकता है।

इस समस्या के लिए अन्य दृष्टिकोण क्या हैं?

उत्तर

91

उपयोग नई .format() स्ट्रिंग विधि:

>>> "{0:#0{1}x}".format(42,6) 
'0x002a' 

स्पष्टीकरण:

आप पत्र हेक्स अंक अपरकेस चाहते हैं लेकिन लोअरकेस 'एक्स' के साथ उपसर्ग, यो u'll एक मामूली वैकल्पिक हल की जरूरत है:

>>> '0x{0:0{1}X}'.format(42,4) 
'0x002A' 

अजगर 3.6 के साथ शुरू, आप भी ऐसा कर सकते हैं:

>>> value = 42 
>>> padding = 6 
>>> f"{value:#0{padding}x}" 
'0x002a' 
+0

क्या यह इसे पायथन 3.6 में स्वरूप स्ट्रिंग के रूप में लिखना संभव है? –

+0

@ रिचर्ड न्यूमैन: हाँ, क्या आपने इसे आजमाया है? –

+0

हां, लेकिन बिना किसी सफलता के, क्योंकि मैं इसके लिए सही वाक्यविन्यास नहीं समझ सकता: 'value = 42; पैडिंग = 6; च "{मूल्य: # 0 {padding} x}": 'फ़ाइल" ", लाइन 1 च" {मूल्य: # 0 {padding} x} " ^ सिंटैक्स त्रुटि: अमान्य syntax' –

15

कैसे इस बारे में:

print '0x%04x' % 42 
+0

द्वारा सुझाया गया उत्कृष्टता: -) – jon

+8

चौड़ाई पास करने के लिए '*' का उपयोग करें: '0x% 0 * x '% (4,42) ' –

2

उपयोग * चौड़ाई पारित करने के लिए और X अपरकेस

print '0x%0*X' % (4,42) # '0x002A' 

के रूप में के लिए georg और Ashwini Chaudhary

+0

चौड़ाई पास करने के लिए * का उपयोग करने का क्या कारण है? –

+1

@ राफेलजे इसे सामान्य बनाने के लिए, इसे हार्डकोड करने की बजाय – GabrielOshiro

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^