2011-08-27 7 views
5

में वास्तविक बाइनरी मान को एक बाइट की बाइनरी स्ट्रिंग प्रतिनिधित्व कन्वर्ट मैं एक बाइट के एक बाइनरी स्ट्रिंग प्रतिनिधित्व,अजगर

01010101 

मैं कैसे यह एक वास्तविक बाइनरी मान को परिवर्तित कर सकते हैं जैसे और यह एक को लिखने बाइनरी फ़ाइल?

उत्तर

9

2 के साथ एक पूर्णांक के रूप में एक बाइनरी मान पढ़ने के लिए base का उपयोग करें।

n = int('01010101', 2) 

अजगर 2 बाइनरी डेटा को संभालने के लिए तार का उपयोग करता है, तो आप the chr() function का उपयोग एक एक बाइट स्ट्रिंग के लिए पूर्णांक कन्वर्ट करने के लिए होगा।

data = chr(n) 

अजगर 3 द्विआधारी और पाठ संभालती अलग तरह से है, तो आप के बजाय the bytes type उपयोग करने के लिए की जरूरत है। इसका chr() फ़ंक्शन के बराबर प्रत्यक्ष नहीं है, लेकिन bytes कन्स्ट्रक्टर बाइट मानों की एक सूची ले सकता है। हमने एक तत्व सरणी में n डाल दिया और इसे bytes ऑब्जेक्ट में परिवर्तित कर दिया।

with open('out.bin', 'wb') as f: 
    f.write(data) 
+0

काफी स्पष्ट और विस्तृत:

data = bytes([n]) 

बार जब आप अपने बाइनरी स्ट्रिंग है, तो आप द्विआधारी मोड में एक फ़ाइल को खोलने और इस तरह यह करने के लिए डेटा लिख ​​सकते हैं। धन्यवाद – xiaohan2012

+1

पायथन 2.6+ के लिए, आप शायद 'bytearray ([n])' का उपयोग कर सबसे अच्छे हैं। [डॉक्टर देखें] (http://docs.python.org/2/library/functions.html#bytearray)। – ford