के साथ समाप्त होने वाली संरचना को अनपॅक करना मैं एक ASCII स्ट्रिंग के साथ समाप्त होने वाले डेटा रिकॉर्ड को अलग करने के लिए struct.unpack()
का उपयोग करने का प्रयास कर रहा हूं।ASCIIZ स्ट्रिंग
रिकॉर्ड (यह एक टॉम टॉम ov2 रिकॉर्ड होता है) इस प्रारूप है (संग्रहीत थोड़ा-endian):
- 1 बाइट कुल रिकॉर्ड आकार के लिए
- 4 बाइट पूर्णांक (इस क्षेत्र सहित)
- 4 बाइट पूर्णांक
- 4 बाइट पूर्णांक
- चर लंबाई स्ट्रिंग, अशक्त-समाप्त
unpack()
आवश्यक है कि स्ट्रिंग की लंबाई आपके द्वारा पास प्रारूप में शामिल की जाए।
str_len = struct.unpack("<xi", record[:5])[0] - 13
fmt = "<biii{0}s".format(str_len)
तो पूर्ण unpacking के साथ आगे बढ़ना है, लेकिन स्ट्रिंग के बाद से अशक्त-समाप्त होता है: स्ट्रिंग लंबाई प्राप्त करने के लिए - 13 बाइट्स - मैं दूसरे क्षेत्र और रिकॉर्ड के बाकी के नाम से जाना जाता आकार का उपयोग कर सकते , मैं वास्तव में चाहता हूं कि unpack()
मेरे लिए यह करेगी। यह भी अच्छा होगा कि मुझे यह उस संरचना में चलाना चाहिए जिसमें उसका अपना आकार शामिल न हो।
मैं यह कैसे कर सकता हूं?
हालांकि मैं इस का उत्तर दिया है वहाँ स्थान या प्रारूप स्ट्रिंग में 'z' चरित्र की घटनाओं की संख्या के लिए कोई प्रतिबंध नहीं मैं जिस समाधान के साथ आया था उसे साझा करने के लिए, मुझे दूसरों को देखने में खुशी होगी। –