Python struct module

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

Report Page