الدرس 2 من 9

التمثيل الست عشري

هدف الدرس

البايت رمزان ست عشريان

01

الشرح

النظام الست عشري (hexadecimal) يكتب العدد بستة عشر رمزًا: الأرقام من 0 إلى 9 ثم الحروف من a إلى f. وتدلّ عليه في Python البادئة 0x، فالعدد 0xff هو 255. ولأن كل رمز ست عشري يمثّل أربعة بتات بالضبط، يُكتب البايت دائمًا برمزين من 00 إلى ff، ولهذا يقرأ أهل الهندسة العكسية البايتات بهذه الصورة.

وللتحويل في Python أدوات جاهزة. فالطريقة data.hex(" ") تعرض البايتات وتفصل بينها بمسافة، والدالة bytes.fromhex("ff 00") تعكسها وتتجاهل المسافات، والدالة format(26, "02x") تكتب عددًا واحدًا برمزين فتعطي "1a". أمّا العدد المكوَّن من عدّة بايتات فتقرؤه الدالة int.from_bytes.

وأشهر ما ستراه من هذا التفريغ الست عشري (hexdump). في كل سطر منه عنوان البداية، ثم ستة عشر بايتًا، ثم تمثيلها نصًّا بين خطّين عموديّين، والنقطة فيه مكان كل بايت لا يُطبع:

00000000  89 50 4e 47 0d 0a 1a 0a  00 00 00 0d 49 48 44 52  |.PNG........IHDR|
02

المطلوب

اكتب الدالة to_hex(data) لتُرجع البايتات نصًّا ست عشريًّا بمسافة بين كل بايتين مثل "ff 00 1a"، والدالة from_hex(text) لتعكسها فتُرجع bytes. ثم احسب في value قيمة البايتين bytes([0x12, 0x34]) عددًا صحيحًا بالدالة int.from_bytes وبالترتيب "big"، وسترى معنى هذا الترتيب في الدرس التالي.

الفحوص

5 فحوص
  1. الدالة to_hex تفصل البايتات بمسافة
  2. الدالة to_hex تكتب البايت الصغير برمزين
  3. الدالة from_hex تعكس to_hex
  4. الدالة from_hex تتجاهل المسافات وتُرجع bytes
  5. قيمة البايتين في value صحيحة
03

تلميحات

0/3
main.py
المخرجاتPython (Pyodide)

نحمّل بيئة Python الآن. يحدث هذا مرّة واحدة فقط، ثم يحفظها متصفّحك.

–/5

يبدأ الفحص حين تجهز البيئة.

تجد 5 فحوص في بطاقة «المطلوب».