2013-04-08 5 views
12

इस पर एक नज़र डालें:पायथन, प्रिंटिंग हेक्स पहले 0 हटा देता है?

fc = '0x' 
for i in b[0x15c:0x15f]: 
    fc += hex(ord(i))[2:] 

इस कोड, हेक्स 00 04 0f पाया बजाय इसे उस तरह से लेखन, यह पहली 0 को हटा का कहना चलें, और लिखते हैं: 04F किसी भी मदद?

उत्तर

21

इसका कारण यह है hex() किसी भी स्थान में शून्य शामिल नहीं होंगे क्या हो रहा है, उदाहरण के लिए:

>>> hex(15)[2:] 
'f' 

सुनिश्चित करें कि आप हमेशा प्राप्त करने के लिए दो पात्रों, आप जोड़ना str.zfill() उपयोग कर सकते हैं एक अग्रणी शून्य जब आवश्यक:

>>> hex(15)[2:].zfill(2) 
'0f' 

यहाँ wha है टी यह अपने कोड में दिखाई देगा:

fc = '0x' 
for i in b[0x15c:0x15f]: 
    fc += hex(ord(i))[2:].zfill(2) 
+0

से अलग है में ख मैं [0x15c: 0x15f]: \t \t एच = हेक्स (ord (i)) [2:] \t \t अगर lEN (ज) = 2: एच = '0' + h \t \t एफसी + = एच; ' एक दोस्त ने कहा कि यह – thethiny

+0

काम करेगा, आखिरकार, एक उचित ढंग से समझाया गया उदाहरण था एस! – monojohnny

+0

मैं यह नहीं कहूंगा कि यह सही ढंग से समझाया गया है और मैं समझाने के लिए सबसे अच्छा नहीं हूं। यह प्रमुख शून्यों को अनदेखा कर रहा है क्योंकि उनका मतलब हेक्स मानों के दशमलव मान की ओर कुछ भी नहीं है। वे मूल्यों को उठाते हुए बाइट्स की संख्या इंगित करते हैं। 15 = एफ। 0 एफ = 15 क्योंकि 0 + 15 15 –

2
print ["0x%02x"%ord(i) for i in b[0x15c:0x15f]] 

उपयोग एक प्रारूप स्ट्रिंग "%2x" यह बताता है यह फ़ॉर्मेट करने के लिए विस्तृत 2 वर्णों का होना करने के लिए, वैसे ही "%02x" पैड को यह बताता है 0 के

ध्यान दें कि यह अभी भी हटा साथ अग्रणी 0 के अधिक से अधिक 2 के साथ चीजों से हेक्स मान उदाहरण: "0x%02x"%0x0055 => "0x55"

0

यह अभी भी आपकी सुविधा के लिए एक ग्राफिकल प्रतिनिधित्व है।
मूल्य वास्तव में डेटा से नहीं हटाया गया है, यह केवल दृष्टि से छोटा है।

पूर्ण यहाँ वर्णन और क्यों यह है या कारण है कि यह महत्वपूर्ण नहीं है: Why are hexadecimal numbers prefixed with 0x?

+1

नहीं, यह डेटा से छीन लिया है, मैं उत्पादन मुद्रण की कोशिश की, और यह अलग-अलग मान देता है, 04F के लिए 'बहुत ज़्यादा 00040f – thethiny

11
>>> map("{:02x}".format, (10, 13, 15)) 
['0a', '0d', '0f'] 
+3

यह सबसे अधिक उत्तर देने वाले उत्तर की तुलना में अधिक पाइथनिक है! +1! – Antonvh

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