2012-07-24 18 views
35

कहें कि मेरे पास 4 वर्ण स्ट्रिंग है, और मैं इस स्ट्रिंग को बाइट सरणी में परिवर्तित करना चाहता हूं जहां स्ट्रिंग में प्रत्येक वर्ण को इसके हेक्स समकक्ष में अनुवादित किया जाता है। जैसेपायथन: स्ट्रिंग को बाइट सरणी में परिवर्तित करें

str = "ABCD" 

मैं अपने उत्पादन

array('B', [41, 42, 43, 44]) 

होने के लिए वहाँ एक सीधा तरीका यह है है पाने के लिए कोशिश कर रहा हूँ?

+3

क्या आप चाहते हैं तो कम से कम इस सटीक रूप में नहीं, संभव नहीं है। प्रकार 'बी' के एक उपनिवेश में 1-बाइट पूर्णांक होते हैं, और वे हमेशा दशमलव में प्रदर्शित होते हैं। –

उत्तर

34

एनकोड समारोह तुम यहाँ मदद कर सकते हैं, एनकोड स्ट्रिंग

In [44]: str = "ABCD" 

In [45]: [elem.encode("hex") for elem in str] 
Out[45]: ['41', '42', '43', '44'] 

या आप उपयोग कर सकते हैं सरणी मॉड्यूल

In [49]: import array 

In [50]: print array.array('B', "ABCD") 
array('B', [65, 66, 67, 68]) 
+0

हालांकि आप देख सकते हैं, सरणी मॉड्यूल स्ट्रिंग तत्वों का एएससीआई मान देता है, जो आपके अपेक्षित आउटपुट – avasal

+0

धन्यवाद से मेल नहीं खाता है। ये विचार मुझे काम करने के लिए पर्याप्त देते हैं! – Alex

+0

क्यों 'मानचित्र' का उपयोग नहीं करते? – pradyunsg

2
s = "ABCD" 
from array import array 
a = array("B", s) 

यदि आप चाहते हैं की एक इनकोडिंग संस्करण रिटर्न हेक्स:

print map(hex, a) 
22

बसका उपयोग करेंजो बाइट्स की एक सूची है।

को Python2:

s = "ABCD" 
b = bytearray() 
b.extend(s) 

python3:

s = "ABCD" 
b = bytearray() 
b.extend(map(ord, s)) 

वैसे, एक चर नाम के रूप में str का उपयोग नहीं करते के बाद से है कि builtin है।

+0

यह 3.4 में टूटा हुआ है: 'टाइपरर: एक पूर्णांक आवश्यक है' –

+0

@ केवन अहलक्विस्ट मेरा बुरा। इसे अभी तय करें। – Pithikos

+0

पाइथन 3 के लिए यह मेरे लिए क्लीनर दिखता है: 's =" एबीसीडी "', 'बी = बाइटियर()', 'b.extend (s.encode())' –

3

बाइट सरणी प्राप्त करने का एक विकल्प एएससीआई में स्ट्रिंग को एन्कोड करना है: b=s.encode('ascii')

4

यह मेरे लिए काम करता (अजगर 2)

s = "ABCD" 
b = bytearray(s) 

# if your print whole b, it still displays it as if its original string 
print b 

# but print first item from the array to see byte value 
print b[0] 

संदर्भ: http://www.dotnetperls.com/bytes-python

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