الدرس 5 من 6
السجلّ المخفي
- 20 دقيقة
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
المشي على سجلّات بأطوال متغيّرة
الشرح
هذه كتلة بايتات من ملف بيانات مخترَع. أوّل بايت فيها عدد السجلّات، ثم تأتي السجلّات متتالية، وكل سجلّ يبدأ ببايت نوعه (tag)، ثم بايت طوله، ثم بياناته بذلك الطول:
count | tag len data... | tag len data... | ...
والسجلّ الذي نوعه 0xFF يحمل العلم. وأطوال السجلّات تختلف، فلا تعرف أين يبدأ سجلّ حتى تقرأ طول الذي قبله.
المطلوب
اكتب الدالة extract_flag(blob) لتقرأ السجلّات بالترتيب وتُرجع بيانات السجلّ الذي نوعه 0xFF بايتات، أو None إن لم يكن في الكتلة سجلّ كهذا. والفحص يعطيها كتلًا أخرى بسجلّات مختلفة.
الفحوص
5 فحوص- يستخرج العلم من أوّل سجلّ
- يجد العلم في السجلّ الثالث
- يتعامل مع سجلّات فارغة وطويلة
- لا ينخدع ببايت 0xFF داخل البيانات
- يُرجع None حين لا سجلّ للعلم