نص إلى ثنائي: كيف تبدو السلسلة على مستوى البايت
ما الذي يفعله هذا التحويل
يرمّز النص إلى بايتات بترميز UTF-8 ثم يكتب كل بايت كثمانية أرقام ثنائية. ولا حساب هنا أبداً — يُبحث عن الحرف في جدول ويُكتب — لكن الناتج هو تسلسل الآحاد والأصفار الفعلي الذي سيُخزَّن أو يُرسَل فعلاً لتلك السلسلة.
لماذا UTF-8 لا ASCII وحده
لا يعرّف ASCII سوى 128 حرفاً، وهي تغطي الإنجليزية بارتياح ولا تغطي غيرها إطلاقاً. ويُبقي UTF-8 الرموز الـ128 الأولى مطابقة تماماً لـASCII ويمدّ الباقي على بايتين أو ثلاثة أو أربعة، فتنتج السلسلة الإنجليزية البايتات نفسها التي ينتجها ASCII بينما يظل الحرف الصيني أو الرمز التعبيري يعمل. ولهذا يكون A بايتاً واحداً والحرف الصيني الواحد ثلاثة بايتات.
جدول تحويل النص إلى الثنائي
سلاسل قصيرة مع تسلسلات بايتاتها الثنائية. والصفوف متعددة البايتات هي المثيرة: فهي تُظهر كيف يصير الحرف الواحد مجموعة بايتات، لكل منها نمط بادئ مميّز.
| نص | ثنائي |
|---|---|
| A | 01000001 |
| Hi | 01001000 01101001 |
| OK | 01001111 01001011 |
| 123 | 00110001 00110010 00110011 |
| ! | 00100001 |
| Go | 01000111 01101111 |
البايت الذي لم تكن تتوقعه
أشهر مفاجأة في معالجة النصوص سلسلة أطول مما تبدو. فخمسة أحرف قد تكون خمسة بايتات أو خمسة عشر بحسب الأبجدية، وأي حدّ طول مكتوب بالأحرف ستخرقه حدود مكتوبة بالبايتات. ورؤية تسلسل البايتات تجعل ذلك ملموساً: فالبتات البادئة لكل بايت في حرف متعدد البايتات تعلن كم بايتاً يشغل الحرف.
عدد البايتات يخالف عدد الأحرف
عندما يُقاس عمود قاعدة بيانات أو حدّ واجهة برمجية أو حقل ترويسة بالبايتات، فاعدد البايتات لا الأحرف. ويعرض المحوّل تسلسل البايتات مباشرة، فعدد المجموعات هو عدد البايتات، وهو الرقم الذي تفحصه تلك الحدود فعلاً.
الأسئلة الشائعة
كيف يتحول النص إلى ثنائي؟
يُبحث عن كل حرف في جدول ترميز UTF-8 ويُستبدل بقيمة بايته أو بايتاته، ثم يُكتب كل بايت كثمانية أرقام ثنائية. فالحرف A بايته 65 أي 01000001، ويشغل بايتاً واحداً بالضبط لأنه داخل مدى ASCII الأصلي.
لماذا يشغل الحرف الصيني الواحد أكثر من بايت؟
لأن UTF-8 يحتاج تغطية أكثر بكثير من 256 حرفاً، فتتوزع الحروف خارج الـ128 الأولى على بايتين أو ثلاثة أو أربعة. والحرف الصيني الواحد يشغل عادة ثلاثة بايتات، ولهذا يظهر هنا كثلاث مجموعات من ثمانية أرقام لا كمجموعة واحدة.
هل هذا هو نفسه ASCII؟
للنص الإنجليزي العادي، نعم — فقد صُمم UTF-8 بحيث تكون الرموز الـ128 الأولى مطابقة لـASCII بايتاً ببايت، فكلمة Hello تُرمَّز بالطريقة نفسها في الاثنين. ويفترقان لحظة استخدام حرف مشكَّل أو رمز عملة أو أي أبجدية غير لاتينية، حيث لا يقدّم ASCII شيئاً ويقدّم UTF-8 الحل.
لماذا تُفصل البايتات بمسافات؟
لأن سلسلة ثنائية متصلة غير مقروءة ويسهل إسقاط رقم منها، بينما تُظهر مجموعات الثمانية المفصولة بمسافات حدود البايتات مباشرة. والمسافات في الإدخال تُهمَل عند فك الترميز، فالتسلسل المنسوخ من هذه الصفحة يمكن لصقه في الاتجاه المعاكس دون تعديل.
هل يتعامل مع الرموز التعبيرية؟
نعم. تقع الرموز التعبيرية فوق المدى الذي تبلغه ثلاثة بايتات، فيرمّزها UTF-8 في أربعة بايتات في معظم الحالات، وتظهر هنا كأربع مجموعات من ثمانية أرقام. وقد يكون الرمز التعبيري الواحد أطول من كلمة إنجليزية قصيرة بعد ترميزه.