পাইথন লাইব্রেরির struct মডিউলের প্রয়োজনীয়তা C-টাইপ স্ট্রাক্ট এবং পাইথন বাইটস অবজেক্টের মধ্যে কনভার্সন انجام দিতে সাহায্য করে। এটি মডিউল-লেভেল ফাংশন এবং Struct ক্লাস ও তার মেথডদ্বারা করা যায়।
কনভার্সন ফাংশনগুলো একটি ফরম্যাট স্ট্রিং ব্যবহার করে। ফরম্যাট স্ট্রিং-এ ব্যবহার করা বাইট অর্ডার, আকার এবং অ্যালাইনমেন্ট ফরম্যাটিং ক্যারেক্টার দ্বারা নির্ধারিত হয়, নিচের টেবিল অনুযায়ী:
| Character | Byte order | Size | Alignment |
|---|---|---|---|
| @ | native | native | native |
| = | native | standard | none |
| < | little-endian | standard | none |
| > | big-endian | standard | none |
| ! | network (= big-endian) | standard | none |
নিচের টেবিলটি C-টাইপ ভেরিয়েবল এবং відповresponding পাইথন টাইপ নির্দেশকারী ফরম্যাট ক্যারেক্টারগুলো দেখাচ্ছে।
| Format | C Type | Python type |
|---|---|---|
| x | pad byte | no value |
| c | char | bytes of length 1 |
| b/B | signed/unsigned char | integer |
| ? | _Bool | bool |
| h/H | short/unsigned short | integer |
| i/I | int/unsigned int | integer |
| l/L | long/unsigned long | integer |
| f | float | float |
| d | double | float |
| s | char[] | bytes |
| p | char[] | bytes |
| P | void * | integer |
struct মডিউলে নিচের ফাংশনগুলো সংজ্ঞায়িত:
pack()
এই ফাংশনটি ফরম্যাট স্ট্রিং অনুযায়ী মানগুলো প্যাক করে একটি বাইটস অবজেক্ট রিটার্ন করে। ফরম্যাটিং ক্যারেক্টারগুলো ফরম্যাট দ্বারা আপেক্ষিত মানগুলোকে ম্যাচ করতে হবে।
unpack()
এই ফাংশনটি ফরম্যাট স্ট্রিং অনুযায়ী বাফার থেকে আনপ্যাক করে। ফলাফল একটি টাপল, এমনকি যদি সেটিতে শুধু একটি আইটেম থাকে।
নিচের কোডটি এই ফাংশনগুলো ব্যবহারের উদাহরণ:
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)
প্যাকিং/আনপ্যাকিং Struct ক্লাসের মেথডদ্বারাও করা যায়। একবার Struct অবজেক্ট তৈরি করে তার মেথড কল করা একই ফরম্যাট স্ট্রিংয়ের সাথে struct ফাংশন কল করার চেয়ে বেশি দক্ষ, কারণ ফরম্যাট স্ট্রিংটি শুধু একবার কম্পাইল করা প্রয়োজন।
Struct(format)
এই কনস্ট্রাক্টর একটি নতুন Struct অবজেক্ট রিটার্ন করে যা ফরম্যাট স্ট্রিং অনুযায়ী বাইনারি ডেটা লেখে এবং পড়ে।
pack()
এই মেথডটি কম্পাইল্ড ফরম্যাট ব্যবহার করে pack() ফাংশন जैसा কাজ করে।
unpack()
এই মেথডটি কম্পাইল্ড ফরম্যাট ব্যবহার করে unpack() ফাংশন जैसा কাজ করে।
নিচের উদাহরণটি Struct ক্লাস ব্যবহার করে পাইথন ডেটা প্যাক এবং আনপ্যাক করার প্রদর্শন করে।
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)