Python struct module
Adolf Macro (SPAM GEEK)Struct in python :
از اونجایی که به صورت کلی کارکرد struct در پایتون همیشه برای من یکمقدار مبهم بود ، نهایتا بعد یه مدت مطالعه دربارش امروز تصمیم گرفتم یه نتیجه کلی ازش با شما هم به اشتراک بذارم .
Native data :
در واقع native data به نوعی داده گفته میشود که برای یک نوع خاص از سخت افزار ( معمولا پردازنده ) یا موارد مشابه نوشته شده است .
در مثال ساده تر Native API ویندوز را در نظر بگیرید که به جهت پردازش Native data نوشته شده است .
در اصل ماژول python struct به جهت تبدیل native data ها به بایت و بلعکس استفاده میشود .
ماژول struct مانند بسیاری از ماژول های دیگری که در پایتون وجود دارند مربوط به زبان مادر یا همان C میشود .
استفاده از native byte ordering و padding یا فرمت های استاندارد معمولی نهایتا به کاربر بستگی دارد و فرمت بندی آن جهت تفهیم ماژول struct بدین شرح است :

نکاتی در رابطه با موارد ذکر شده :
1) اگر هیچکدام از موارد از پیش تعریف شده نباشند ، نهایتا از @ استفاده میشود .
2) تفاوت بین = و @ در size آنها است ( سایز در = استاندارد است )
3) سایز و alignment با استفاده از sizeof کامپایلر c تعیین میشوند .
4) در byte order ها big-endian یا little-endian بسته به ویژگی های سخت افزاری خاص سیستم تعیین میشوند ، به عنوان مثال : Intel x86، AMD64 (x86-64) و apple m1 به صورت little-endian هستند .
5) برای تعریف non-native هیچ راهی بجز استفاده از "<" و ">" وجود ندارد .
انواع داده ها در ماژول struct با کاراکتر های خاصی مشخص میشوند که به شرح زیر هستن :

تبدیل داده به byte با استفاده از ماژول struct :
struct.pack() :
اولین آرگومان متد struct.pack بر اساس جدول بالا نوع داده های سایر آرگومان ها را برای رندر کردن دریافت میکند و سایر آرگومان ها را تحت عنوان ورودی بر اساس آن فرمت های داده شده در نظر میگیرد .
مثال :

در آرگومان اول فرمت ورودی ها یعنی 14 کاراکتر string و یک عدد integer به متد داده شد و در سایر آرگومان ها به ترتیب داده های ورودی وارد شدند .
OUTPUT ::

struct.unpack :
یک متد دیگر نیز وجود دارد تحت عنوان struct.unpack که دقیقا بلعکس struct.pack عمل میکند ؛ ورودی را به صورت byte میگیرد و خروجی را به انواع داده های پایتون تبدیل میکند .
(متد struct.unpack همیشه یک tuple را return میکند)
مثال :

OUTPUT ::

سایر متد های ماژول struct با توجه به موارد ذکر شده روشن هستند و جهت کسب اطلاعات بیشتر به document ماژول struct مراجعه کنید.
Telegram : @SpamGeeks