2012-05-30 8 views
14

पर एक स्ट्रिंग को हेक्स बाइट्स को कैसे परिवर्तित करें, मुझे लगता है कि बिनसासी वह मॉड्यूल है जिसे मैं ढूंढ रहा हूं, लेकिन मुझे लगता है कि मैं सटीक परिणाम प्राप्त नहीं कर रहा हूं।पायथन: एक हेक्स स्ट्रिंग

यहां मैं क्या करना चाहता हूं। मैं परिवर्तित करना चाहते हैं:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab' 
>>> print len(s) 
40 

>>> hs = '\x35\x6a\x19\x2b\x79\x13\xb0\x4c\x54\x57\x4d\x18\xc2\x8d\x46\xe6\x39\x54\x28\xab' 
>>> print len(hs) 
20 

के लिए एक शांत (या, स्पष्ट रूप से, कार्यात्मक) यह करने के लिए रास्ते से किसी भी Pythonistas पता?

उत्तर

18

पायथन 2.x में सबसे आसान समाधान:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab' 
>>> s.decode("hex") 
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab' 

दूसरी पंक्ति

binascii.a2b_hex(s) 
+0

हाँ, कि मैं वास्तव में क्या देख रहा था है के लिए, और यह स्ट्रिंग क्लास में मेरे लिए इंतजार कर रहा था। धन्यवाद, स्वेन! –

3

के बराबर है binascii मॉड्यूल के साथ:

>>> from binascii import unhexlify 
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab' 
>>> unhexlify(s) 
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab' 
+0

'unhexlify()' 'a2b_hex()' [binascii दस्तावेज़ीकरण] के लिए एक और नाम है (https://docs.python.org/2/library/binascii.html#binascii.a2b_hex) – Murmel