পাইথন লাইব্রেরিতে স্ট্রাকট মডিউলের বিধানগুলি সি টাইপ স্ট্রাকট এবং পাইথন বাইট অবজেক্টের মধ্যে রূপান্তর করতে কার্যকর। এটি মডিউল স্তরের ফাংশনগুলির পাশাপাশি স্ট্রাকট ক্লাস এবং স্ট্রাকট মডিউলে সংজ্ঞায়িত এর পদ্ধতিগুলি দ্বারা অর্জন করা যেতে পারে৷
রূপান্তর ফাংশন একটি বিন্যাস স্ট্রিং ব্যবহার করে। ফর্ম্যাট স্ট্রিং-এ ব্যবহৃত বাইট ক্রম, আকার এবং সারিবদ্ধকরণ নিম্নলিখিত টেবিল অনুসারে অক্ষর বিন্যাস দ্বারা নির্ধারিত হয়
অক্ষর | বাইট অর্ডার | আকার | সারিবদ্ধকরণ |
---|---|---|---|
@ | নেটিভ | নেটিভ | নেটিভ |
= | নেটিভ | মান | কোনও নয় |
< | লিটল-এন্ডিয়ান | মান | কোনও নয় |
> | বিগ-এন্ডিয়ান | মান | কোনও নয় |
! | নেটওয়ার্ক (=বড়-এন্ডিয়ান) | মান | কোনও নয় |
নিম্নলিখিত সারণী সি টাইপ ভেরিয়েবল এবং সংশ্লিষ্ট পাইথন প্রকারগুলি বোঝাতে ব্যবহৃত ফর্ম্যাট অক্ষরগুলি দেখায়৷
ফর্ম্যাট | C প্রকার | পাইথন প্রকার |
---|---|---|
x | প্যাড বাইট | কোন মান নেই |
c | চর | দৈর্ঘ্যের বাইট 1 |
b/B | স্বাক্ষরিত/স্বাক্ষরবিহীন চর৷ | পূর্ণসংখ্যা |
? | _বুল | বুল |
h/H | ছোট/স্বাক্ষরবিহীন ছোট | পূর্ণসংখ্যা |
i/I | int/unsigned int | পূর্ণসংখ্যা |
l/L | দীর্ঘ/স্বাক্ষরবিহীন লম্বা৷ | পূর্ণসংখ্যা |
f | ফ্লোট | ফ্লোট |
d | ডবল৷ | ফ্লোট |
s | char[] | বাইট |
p | char[] | বাইট |
P | অকার্যকর * | পূর্ণসংখ্যা |
নিম্নলিখিত ফাংশনগুলি স্ট্রাকট মডিউলে সংজ্ঞায়িত করা হয়েছে
প্যাক()
এই ফাংশন ফরম্যাট স্ট্রিং বিন্যাস অনুযায়ী প্যাক করা মান ধারণকারী একটি বাইট বস্তু প্রদান করে। ফর্ম্যাটিং অক্ষরগুলি অবশ্যই ফর্ম্যাটের জন্য প্রয়োজনীয় মানগুলির সাথে মেলে৷
৷আনপ্যাক()
এই ফাংশন বিন্যাস স্ট্রিং বিন্যাস অনুযায়ী বাফার থেকে আনপ্যাক. ঠিক একটি আইটেম থাকলেও ফলাফলটি একটি টিপল।
নিম্নলিখিত কোড এই ফাংশন ব্যবহার প্রদর্শন করে.
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)
স্ট্রাকট ক্লাসে পদ্ধতি ব্যবহার করে প্যাকিং/আনপ্যাকিংও অর্জন করা যেতে পারে। একবার একটি স্ট্রাকট অবজেক্ট তৈরি করা এবং তার পদ্ধতিগুলিকে কল করা একই ফর্ম্যাটে স্ট্রাকট ফাংশনগুলিকে কল করার চেয়ে বেশি কার্যকর কারণ ফর্ম্যাট স্ট্রিংটি শুধুমাত্র একবার কম্পাইল করা দরকার৷
স্ট্রাকট(ফরম্যাট)
এই কনস্ট্রাক্টর একটি নতুন স্ট্রাকট অবজেক্ট ফেরত দেয় যা ফরম্যাট স্ট্রিং ফরম্যাট অনুযায়ী বাইনারি ডেটা লেখে এবং পড়ে।
প্যাক()
এই পদ্ধতিটি কম্পাইল করা ফরম্যাট ব্যবহার করে প্যাক() ফাংশনের অনুরূপ।
আনপ্যাক()
এই পদ্ধতিটি unpack() ফাংশনের অনুরূপ, সংকলিত বিন্যাস ব্যবহার করে।
নিম্নলিখিত উদাহরণ দেখায় কিভাবে স্ট্রাকট ক্লাস পাইথন ডেটা প্যাক এবং আনপ্যাক করতে ব্যবহৃত হয়।
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)