حرف فارغ
الحرف الفارغ (يُعرف أيضًا باسم null terminator ) هو حرف تحكم بقيمة صفر. [1] [2] [3] [4] وهو موجود في العديد من مجموعات الأحرف ، بما في ذلك تلك التي تم تعريفها بواسطة أكواد Baudot و ITA2 و ISO/IEC 646 (أو ASCII ) ورمز التحكم C0 ومجموعة الأحرف المشفرة العالمية (أو Unicode ) و EBCDIC . وهو متاح في جميع لغات البرمجة السائدة تقريبًا . [5] وغالبًا ما يتم اختصاره باسم NUL (أو NULL ، على الرغم من استخدام هذا المصطلح في بعض السياقات للإشارة إلى مؤشر الفارغ ). وفي أكواد 8 بت، يُعرف باسم بايت فارغ .
كان المعنى الأصلي لهذا الحرف مثل NOP — عند إرساله إلى طابعة أو محطة طرفية ، فإنه لا يكون له أي تأثير (ومع ذلك، تعرضه بعض المحطات الطرفية بشكل غير صحيح على أنه مسافة ). عندما تم استخدام الطابعات عن بعد الكهروميكانيكية كأجهزة إخراج كمبيوتر، تم إرسال حرف أو أكثر من الأحرف الفارغة في نهاية كل سطر مطبوع للسماح بالوقت للآلية للعودة إلى موضع الطباعة الأول في السطر التالي. [ بحاجة لمصدر ] على الشريط المثقوب ، يتم تمثيل الحرف بدون أي ثقوب على الإطلاق، لذلك يتم ملء شريط جديد غير مثقوب في البداية بأحرف فارغة، وغالبًا ما يمكن إدراج النص في مساحة محجوزة من الأحرف الفارغة عن طريق ثقب الأحرف الجديدة في الشريط فوق الأحرف الفارغة.
اليوم، يكتسب الحرف أهمية أكبر بكثير في لغة البرمجة سي ومشتقاتها وفي العديد من تنسيقات البيانات، حيث يعمل كحرف محجوز يستخدم للإشارة إلى نهاية السلسلة ، [ 6] وغالبًا ما يُطلق عليه سلسلة منتهية بعلامة فارغة . [7] وهذا يسمح للسلسلة بأن تكون بأي طول مع تكلفة إضافية قدرها بايت واحد فقط؛ يتطلب البديل لتخزين عدد إما حدًا أقصى لطول السلسلة يبلغ 255 أو تكلفة إضافية تزيد عن بايت واحد (هناك مزايا/عيوب أخرى موصوفة في مقالة السلسلة المنتهية بعلامة فارغة ).
التمثيل
في الكود المصدر ، غالبًا ما يتم تمثيل الحرف الفارغ على أنه تسلسل إفلات \0 في أحرف السلسلة (على سبيل المثال، "abc\0def") أو في ثوابت الأحرف ( '\0')؛ يمكن أيضًا كتابة الأخير بدلاً من ذلك ببساطة على النحو التالي 0(بدون علامات اقتباس أو شرطة مائلة). [8] في العديد من اللغات ( مثل C ، التي قدمت هذا الترميز)، هذا ليس تسلسل إفلات منفصل، ولكنه تسلسل إفلات ثماني برقم ثماني واحد 0؛ ونتيجة لذلك، \0لا يجب أن يتبعه أي من الأرقام 0حتى 7؛ وإلا فسيتم تفسيره على أنه بداية لتسلسل إفلات ثماني أطول. [9] تسلسلات الإفلات الأخرى الموجودة قيد الاستخدام في لغات مختلفة هي \000, \x00, \z, أو \u0000. يمكن وضع حرف فارغ في عنوان URL مع رمز النسبة المئوية %00 .
إن القدرة على تمثيل حرف فارغ لا تعني دائمًا أن السلسلة الناتجة سيتم تفسيرها بشكل صحيح، حيث ستعتبر العديد من البرامج أن الحرف الفارغ هو نهاية السلسلة. وبالتالي فإن القدرة على كتابته (في حالة إدخال المستخدم غير المدقق ) تخلق ثغرة أمنية تُعرف باسم حقن البايت الفارغ ويمكن أن تؤدي إلى ثغرات أمنية. [10]
في تدوين الإدراج، يكون الحرف الفارغ هو ^@. وفي بعض لوحات المفاتيح، يمكن إدخال حرف فارغ بالضغط Ctrlمع الاستمرار على (في تخطيطات الولايات المتحدة، غالبًا ما يعمل الرمز + فقط ، حيث لا توجد حاجة إلى الحصول على علامة @).
@Ctrl2⇧ Shift
الترميز السداسي عشري لـ null هو 00. يؤدي فك تشفير سلسلة Base64AA== أيضًا إلى الحصول على حرف null.
في الوثائق، يتم تمثيل حرف null أحيانًا كرمز بعرض em واحد يحتوي على الأحرف "NUL". في Unicode ، يوجد حرف لهذا: U+2400 ␀ SYMBOL FOR NULL .
الترميز
في جميع مجموعات الأحرف الحديثة، يكون للحرف null قيمة نقطة رمز تساوي صفرًا. وفي معظم الترميزات، يتم ترجمة ذلك إلى وحدة رمز واحدة بقيمة صفرية. على سبيل المثال، في UTF-8 يكون بايتًا واحدًا صفريًا. ومع ذلك، في UTF-8 المعدل، يتم ترميز الحرف null على هيئة بايتين: 0xC0,0x80 . وهذا يسمح باستخدام البايت بقيمة صفر، والذي لا يُستخدم الآن لأي حرف، كفاصل لسلسلة.
مراجع
- ^ تنسيق ASCII لتبادل الشبكات. IETF . القسم 5.2. doi : 10.17487/RFC0020 . RFC 20.
NUL (Null): الحرف الذي يحتوي على جميع الأصفار والذي قد يُستخدم لإنجاز ملء الوقت وملء الوسائط.
- ^ "مجموعة أحرف التحكم في ISO 646" (PDF) . أمانة ISO/TC 97/SC 2. 1975-12-01. ص. 4.4. مؤرشف من الأصل (PDF) في 2014-05-12.
الموضع: 0/0، الاسم: Null، الاختصار: Nul
- ^ "Unicode Character 'NULL' (U+0000)" . تم الاسترجاع في 2018-10-20 .
- ^ "C0 Controls and Basic Latin" (PDF) . Unicode Consortium. 2018 . تم الاسترجاع في 2018-10-20 .
- ^ "يجب أن يوجد بايت مع تعيين جميع البتات على 0، يسمى حرف null ، في مجموعة أحرف التنفيذ الأساسية؛ ويستخدم لإنهاء سلسلة أحرف حرفية." — ANSI/ISO 9899:1990 (معيار ANSI C)، القسم 5.2.1
- ^ " السلسلة عبارة عن تسلسل متجاور من الأحرف تنتهي بحرف فارغ أول ويتضمن ذلك الحرف" — ANSI/ISO 9899:1990 (معيار ANSI C)، القسم 7.1.1
- ^ مسودة عمل، معيار لغة البرمجة C++ (PDF) (مسودة عمل معيار ISO 14882)، ISO / IEC ، 28 فبراير 2011، ص. 427، N3242=11-0012 ، تم الاسترجاع في 27 فبراير 2013 ،
سلسلة
البايتات المنتهية بعلامة فارغة
، أو NTBS، هي تسلسل أحرف يكون العنصر الأعلى عنوانًا فيه مع محتوى محدد له القيمة صفر (
حرف العدم المنتهي
)؛ ولا يوجد عنصر آخر في التسلسل له القيمة صفر.
- ^ Kernighan and Ritchie, C ، ص. 38: "يمثل ثابت الحرف '\0' الحرف الذي قيمته صفر، أي الحرف الفارغ. غالبًا ما يُكتب '\0' بدلاً من 0 للتأكيد على طبيعة الحرف في بعض التعبيرات، ولكن القيمة الرقمية هي 0 فقط."}}
- ^ في YAML، هذه المجموعة عبارة عن تسلسل هروب منفصل.
- ^ قسم تصنيف تهديدات حقن البايت الفارغ WASC وهجوم البايت الفارغ.
روابط خارجية
- قسم هجوم البايت الفارغ تصنيف تهديد WASC حقن البايت الفارغ
- مقدمة عن هجوم البايت السام مقدمة عن هجوم البايت السام
- ثغرة في رمز الاستجابة السريعة QR Code بسبب حقن البايتات في Apple
