iter_unpack يشترط طولًا مضاعفًا لحجم السجل؛ كل خطوة تعيد صفًا (tuple). [1]
الخلاصة السريعة
لا؛ لا يتجاهل بايتًا زائدًا في مثالنا. [1]
- iter_unpack يشترط طولًا مضاعفًا لحجم السجل؛ كل خطوة تعيد صفًا (tuple). [1]
- السجل >H ببايتين، عدد غير موقّع، والبايت الأعلى أولًا. [1]
- على CPython 3.12.14، bad أدناه طوله 5 بايتات. [1]
- إنشاء المكرر يطلق struct.error؛ لا يتجاهل الذيل في المثال. [1]
- تحكم: حذف ff يعطي 7 و9؛ إضافة 00 تضيف 65280؛ يطابق حساب البايتات القراءات، ويبقى bad. [1]
شرط الدفعة
iter_unpack يشترط طولًا مضاعفًا لحجم السجل؛ كل خطوة تعيد صفًا (tuple). [1]
حجم السجل
السجل >H ببايتين، عدد غير موقّع، والبايت الأعلى أولًا. [1]
خمسة بايتات
على CPython 3.12.14، bad أدناه طوله 5 بايتات. [1]
import struct bad=bytes.fromhex("00 07 00 09 ff") try: struct.iter_unpack(">H",bad) except struct.error: print("struct.error") [1]

الخطأ والتحكم
إنشاء المكرر يطلق struct.error؛ لا يتجاهل الذيل في المثال. [1]
good=bad[:-1] print(list(struct.iter_unpack(">H",good))) padded=bad+bytes([0]) print(list(struct.iter_unpack(">H",padded))) [1]
تحكم: حذف ff يعطي 7 و9؛ إضافة 00 تضيف 65280؛ يطابق حساب البايتات القراءات، ويبقى bad. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
