पायथन लाइब्रेरी में स्ट्रक्चर मॉड्यूल के प्रावधान सी टाइप स्ट्रक्चर और पायथन बाइट्स ऑब्जेक्ट्स के बीच रूपांतरण करने में उपयोगी होते हैं। यह मॉड्यूल स्तर के कार्यों के साथ-साथ स्ट्रक्चर क्लास और इसकी विधियों द्वारा प्राप्त किया जा सकता है जैसा कि स्ट्रक्चर मॉड्यूल में परिभाषित किया गया है।
रूपांतरण फ़ंक्शन एक प्रारूप स्ट्रिंग का उपयोग करते हैं। प्रारूप स्ट्रिंग में प्रयुक्त बाइट क्रम, आकार और संरेखण का निर्धारण निम्न तालिका के अनुसार वर्ण स्वरूपण द्वारा किया जाता है
चरित्र वें> <वें शैली ="पाठ-संरेखण:केंद्र;" चौड़ाई ="139">बाइट क्रम वें> <वें शैली ="पाठ-संरेखण:केंद्र;" चौड़ाई ="56"> आकार वें> <वें शैली ="पाठ-संरेखण:केंद्र;" चौड़ाई ="65">संरेखण वें> | |||
---|---|---|---|
@ | मूल | देशी | देशी |
= | मूल | मानक | कोई नहीं |
< | छोटा-एंडियन | मानक | कोई नहीं |
> | बिग-एंडियन | मानक | कोई नहीं |
! | नेटवर्क (=बिग-एंडियन) | मानक | कोई नहीं |
निम्न तालिका सी प्रकार चर और संबंधित पायथन प्रकारों को दर्शाने के लिए प्रयुक्त प्रारूप वर्ण दिखाती है।
प्रारूप वें> <वें शैली ="पाठ-संरेखण:केंद्र;" चौड़ाई ="167">सी प्रकार वें> <वें शैली ="पाठ-संरेखण:केंद्र;" चौड़ाई ="99">पायथन प्रकार वें> | ||
---|---|---|
x | पैड बाइट | कोई मूल्य नहीं |
सी | चार | लंबाई के बाइट 1 |
b/B | हस्ताक्षरित/अहस्ताक्षरित चार | पूर्णांक |
? | _बूल | बूल |
एच/एच | छोटा/अहस्ताक्षरित लघु | पूर्णांक |
i/I | int/unsigned int | पूर्णांक |
एल/ली | लंबा/अहस्ताक्षरित लंबा | पूर्णांक |
f | फ्लोट | फ्लोट |
डी | डबल | फ्लोट |
एस | चार[] | बाइट्स |
पी | चार[] | बाइट्स |
पी | शून्य * | पूर्णांक |
निम्नलिखित कार्यों को स्ट्रक्चर मॉड्यूल में परिभाषित किया गया है
पैक ()
यह फ़ंक्शन एक बाइट्स ऑब्जेक्ट देता है जिसमें प्रारूप स्ट्रिंग प्रारूप के अनुसार पैक किए गए मान होते हैं। फ़ॉर्मेटिंग वर्णों को प्रारूप के लिए आवश्यक मानों से मेल खाना चाहिए।
अनपैक ()
यह फ़ंक्शन प्रारूप स्ट्रिंग प्रारूप के अनुसार बफ़र से अनपैक करता है। परिणाम एक टपल है, भले ही इसमें बिल्कुल एक आइटम हो।
निम्नलिखित कोड इन कार्यों के उपयोग को दर्शाता है।
import struct student=(1, b'Rahul', 65.75) packed=struct.pack('I 5s f', *student) print ('packed data:',packed) unpacked=struct.unpack('I 5s f', packed) print ('unpacked data:',unpacked)
आउटपुट
packed data: b'\x01\x00\x00\x00Rahul\x00\x00\x00\x00\x80\x83B' unpacked data: (1, b'Rahul', 65.75)
स्ट्रक्चर क्लास में विधियों का उपयोग करके पैकिंग/अनपैकिंग भी प्राप्त की जा सकती है। एक स्ट्रक्चर ऑब्जेक्ट को एक बार बनाना और उसके तरीकों को कॉल करना स्ट्रक्चर फ़ंक्शंस को उसी प्रारूप के साथ कॉल करने से अधिक कुशल है क्योंकि प्रारूप स्ट्रिंग को केवल एक बार संकलित करने की आवश्यकता होती है।
संरचना (प्रारूप)
यह कंस्ट्रक्टर एक नया स्ट्रक्चर ऑब्जेक्ट देता है जो प्रारूप स्ट्रिंग प्रारूप के अनुसार बाइनरी डेटा लिखता और पढ़ता है।
पैक ()
यह विधि संकलित प्रारूप का उपयोग करते हुए पैक () फ़ंक्शन के समान है।
अनपैक ()
यह विधि संकलित प्रारूप का उपयोग करते हुए अनपैक () फ़ंक्शन के समान है।
निम्नलिखित उदाहरण दिखाता है कि पायथन डेटा को पैक और अनपैक करने के लिए स्ट्रक्चर क्लास का उपयोग कैसे किया जाता है।
s = struct.Struct('I 5s f') packed=s.pack(*student) print (packed) unpacked = s.unpack(packed) print (unpacked)
पैक किए गए डेटा को सीधे नामित टपल ऑब्जेक्ट में पार्स किया जा सकता है।
from collections import namedtuple newstudent = namedtuple('newstudent','No Name Marks') s1 = newstudent._make(struct.unpack('I 5s f', packed)) print (s1)
आउटपुट
newstudent(No=1, Name=b'Rahul', Marks=65.75)