0Pricing
Zig Academy · درس

‏packed struct للتخطيط الدقيق

رتّب البتات من دون حشو

‏packed struct للتخطيط الدقيق درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.

التخطيط مهم

تحتاج أحيانًا إلى ترتيب البايتات في شكل دقيق، مثل سجل عتاد أو حزمة شبكة. وهنا تتألق بنية packed struct.

تضيف البنى العادية حشوًا

تتيح struct العادية لـ Zig إعادة ترتيب الحقول وإضافة الحشو لتحسين السرعة، لذلك قد يكون حجمها في الذاكرة أكبر من مجموع أجزائها.

const Plain = struct {
    flag: bool,
    value: u32,
};

استخدام packed struct

اكتب packed struct، وستخزن Zig الحقول متجاورة من دون حشو، وبالترتيب الدقيق الذي أعلنتها به.

const Tight = packed struct {
    flag: bool,
    value: u7,
};

إنها محزّمة على مستوى البتات

تُقاس packed struct بـbits لا بالبايتات. تستخدم الحقول أعلاه 1 + 7 بتات، فتتسع تمامًا في بايت واحد.

عدد صحيح داعم معروف

لأن التخطيط دقيق، تملك packed struct نوع backing integer مضمونًا يحتفظ بكل بتاتها معًا.

const Flags = packed struct {
    a: bool,
    b: bool,
    rest: u6,
};

التحويل إلى العدد الصحيح

استخدم @bitCast لتحويل packed struct إلى عددها الصحيح الداعم، حتى تتمكن من تخزينها أو إرسالها كرقم خام.

const f = Flags{ .a = true, .b = false, .rest = 0 };
const bits: u8 = @bitCast(f);

التحويل بالعكس

يقرأ @bitCast نفسه عددًا صحيحًا ويعيده إلى packed struct، فيفك البتات الخام إلى حقول مسمّاة يمكنك استخدامها.

const raw: u8 = 0b0000_0001;
const f: Flags = @bitCast(raw);

التحقق من الحجم الدقيق

استخدم @bitSizeOf للتأكد من أن packed struct تشغل عدد البتات المتوقع تمامًا، من دون حشو مخفي.

const n = @bitSizeOf(Flags); // 8

ترتيب التصريح هو التخطيط

في packed struct، يشغل الحقل الأول البتات الأدنى. فالترتيب هو التخطيط؛ لذلك صرّح بالحقول وفق ما يتطلبه التنسيق تمامًا.

ممتازة للبروتوكولات

تتطابق البنى المحزّمة بسهولة مع التنسيقات الثنائية، مما يتيح لك وصف سجل عتاد أو حزمة على السلك كحقول مسمّاة سهلة القراءة.

مقايضة ينبغي معرفتها

قد يجعل حزم البتات الوصول إلى الحقول أبطأ قليلًا من struct عادية. استخدم packed فقط عندما يكون التخطيط الدقيق مهمًا فعلًا. 🧩

تحقق سريع

ما الذي تضمنه packed struct بشأن حقولها؟

مراجعة

تعلمت أن packed struct توفر تخطيطًا دقيقًا للبتات من دون حشو، ولها عدد صحيح داعم، ويمكن تحويلها باستخدام @bitCast. وهي مثالية للتنسيقات الثنائية. 🎉

الأسئلة الشائعة

هل درس «‏packed struct للتخطيط الدقيق» مجاني؟

نعم — نص درس «‏packed struct للتخطيط الدقيق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏packed struct للتخطيط الدقيق»؟

رتّب البتات من دون حشو تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟

لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «‏packed struct للتخطيط الدقيق»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟

نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏packed struct للتخطيط الدقيق
  2. أعداد صحيحة بعروض اعتباطية مثل u3
  3. حقول البتات والعلامات
  4. ‏extern struct وتخطيط ABI
← العودة إلى Zig Academy