2009-10-06 9 views
5

मैं एक पर्ल स्क्रिप्ट को पायथन में बदलने की कोशिश कर रहा हूं, और यह काफी अलग पैक का उपयोग करता है। मैं प्रत्येक के लिए "टेम्पलेट्स" में लेटरिंग मतभेदों को समझने में सक्षम हूं, लेकिन मुझे समझने में कोई समस्या है कि पर्ल की लंबी घोषणा की कमी को कैसे संभाला जाए।मैं पार्लॉन के लिए struct.pack में पर्ल के पैक 'एनसी *' प्रारूप को कैसे परिवर्तित करूं?

उदाहरण:

pack('Nc*',$some_integer,$long_array_of_integers); 

मैं, struct.pack में इस "*" सुविधा के लिए एक एनालॉग नहीं दिख रहा है अजगर पर। पाइथन में इसे कैसे परिवर्तित करें इस पर कोई विचार?

उत्तर

7

यह कैसे के बारे में?

struct.pack('>I', some_integer) + struct.pack('b'*len(long_array), *long_array) 
+0

मैं यह सब पैक के अंदर) रखने (विधि के अपने विचार पसंद है, लेकिन मैं मिलता है "struct.error: पैक बिल्कुल एक्स तर्क की आवश्यकता है" और खोल (कोई यमक इरादा) सरणी में यह चाल नहीं कर सकता । – ewall

+0

@ewall: एक छोटा टाइपो था, कोड तय किया। – abbot

1

पर्ल का पैक नियमित अभिव्यक्तियों के समान '*' चरित्र का उपयोग कर रहा है - जिसका मतलब है कि इसके लिए वाइल्डकार्ड भी है। यहां, ज़ाहिर है, इसका मतलब है कि अधिक हस्ताक्षर किए गए इनट्स।

अजगर में, आप चाहते सिर्फ स्ट्रिंग के माध्यम से और टुकड़े concat पाश:

result = struct.pack('>L', some_integer) 
for c in long_array_of_integers: 
    result += struct.pack('b',c) 
संबंधित मुद्दे

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