2012-02-09 17 views
77

मेरे पास कुछ पर्ल कोड है जहां हेक्स() फ़ंक्शन हेक्स डेटा को दशमलव में परिवर्तित करता है। मैं इसे Python पर कैसे कर सकता हूं?मैं पाइथन में हेक्स को दशमलव में कैसे परिवर्तित करूं?

+1

क्या आप डेटा को "दशमलव" कन्वर्ट करने के लिए चाहते हैं? पर्ल फ़ंक्शन बस एक हेक्स स्ट्रिंग को एक पूर्णांक में परिवर्तित करता है, न कि दशमलव स्ट्रिंग के लिए। –

+0

@SvenMarnach मैं इस perl हेक्स() मैनुअल का उपयोग करता हूं http://www.misc-perl-info.com/perl-hex.html "यह फ़ंक्शन: में हेक्साडेसिमल स्ट्रिंग (या एक अभिव्यक्ति जो मूल्यांकन के बाद वापस आ जाएगी) एक हेक्स स्ट्रिंग) दशमलव संबंधित मान " –

+1

@Sir D वापस करेगा: वह लेख बहुत बुरी तरह से phrased है। जैसा कि स्वेन कहते हैं, 'हेक्स' एक हेक्स स्ट्रिंग को एक पूर्णांक मान में परिवर्तित करता है (जिसे आंतरिक रूप से बाइनरी में संग्रहीत किया जाता है लेकिन अनिवार्य रूप से आधार के बिना केवल संख्यात्मक मान होता है)। 'प्रिंट' पर कॉल उस मान को दशमलव स्ट्रिंग में परिवर्तित करता है और इसे प्रिंट करता है। – Borodin

उत्तर

139

"हेक्स डेटा" से यदि आप प्रपत्र की एक स्ट्रिंग

s = "6a48f82d8e828ce82b82" 

आप

i = int(s, 16) 

उपयोग कर सकते हैं यह एक पूर्णांक कन्वर्ट करने के लिए और

str(i) 

मतलब कन्वर्ट करने के लिए यह एक दशमलव स्ट्रिंग के लिए।

+14

अरे मुझे पायथन पसंद है। –

+0

एक नकारात्मक हेक्स संख्या के लिए, यह काम नहीं करता है। –

+0

@EricWang यह नकारात्मक संख्याओं के लिए पूरी तरह से ठीक काम करता है: http://ideone.com/IHOQvp। जब तक कि आपके पास निश्चित चौड़ाई वाले दो के पूरक प्रारूप में एन्कोड न किए गए ऋणात्मक संख्या न हो, लेकिन यह यहां से पूछे गए की तुलना में एक अलग समस्या होगी। (संकेत: उस मामले में 'struct' मॉड्यूल का उपयोग करें।) –

26
>>> int("0xff", 16) 
255 

या

>>> int("FFFF", 16) 
65535 

Read the docs

+2

int (0xff) सही काम करेगा। स्ट्रिंग के रूप में पारित होने पर इसे केवल एक स्पष्ट आधार की आवश्यकता होती है। – cassm

12

आप एक शाब्दिक eval इस्तेमाल कर सकते हैं:

>>> ast.literal_eval('0xdeadbeef') 
3735928559 

या बस तर्क के रूप में आधार int को निर्दिष्ट करें:

>>> int('deadbeef', 16) 
3735928559 
+0

यह सही है! =] – GalDude33