शून्य वर्ण: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 29: Line 29:
  |publisher=Unicode Consortium
  |publisher=Unicode Consortium
  |access-date=2018-10-20}}
  |access-date=2018-10-20}}
</ref> यह कई कैरेक्टर सेटों में उपस्थित है, जिनमें बॉडॉट और आईटीए2 कोड, आईएसओ/आईईसी 646 (या एएससीआईआई), सी0 कंट्रोल कोड, यूनिवर्सल कोडेड कैरेक्टर सेट (या यूनिकोड) और ईबीसीडीआईसी द्वारा परिभाषित कैरेक्टर सेट सम्मिलित हैं। यह लगभग सभी मुख्यधारा प्रोग्रामिंग भाषाओं में उपलब्ध है।<ref>"A byte with all bits set to 0, called the ''null character'', shall exist in the basic execution character set; it is used to terminate a character string literal." — ANSI/ISO 9899:1990 (the ANSI C standard), section 5.2.1</ref> इसे अधिकांशतः नल (या नल चूँकि कुछ संदर्भों में उस शब्द का उपयोग शून्य सूचक के लिए किया जाता है) के रूप में संक्षिप्त किया जाता है। 8-बिट कोड में इसे नल बाइट के रूप में जाना जाता है।
</ref> यह कई कैरेक्टर सेटों में उपस्थित है, जिनमें बॉडॉट और आईटीए2 कोड, आईएसओ/आईईसी 646 (या एएससीआईआई), सी0 कंट्रोल कोड, यूनिवर्सल कोडेड कैरेक्टर सेट (या यूनिकोड) और ईबीसीडीआईसी द्वारा परिभाषित कैरेक्टर सेट सम्मिलित हैं। यह लगभग सभी मुख्यधारा प्रोग्रामिंग भाषाओं में उपलब्ध है।<ref>"A byte with all bits set to 0, called the ''null character'', shall exist in the basic execution character set; it is used to terminate a character string literal." — ANSI/ISO 9899:1990 (the ANSI C standard), section 5.2.1</ref> इसे अधिकांशतः नल (या नल चूँकि कुछ संदर्भों में उस शब्द का उपयोग शून्य सूचक के लिए किया जाता है) के रूप में संक्षिप्त किया जाता है। 8-बिट कोड में इसे नल बाइट के रूप में जाना जाता है।


इस वर्ण का मूल अर्थ एनओपी जैसा था - जब इसे प्रिंटर या टर्मिनल पर भेजा जाता है, तो इसका कोई प्रभाव नहीं पड़ता है (चूँकि, कुछ टर्मिनल इसे गलत विधि से स्पेस के रूप में प्रदर्शित करते हैं)। जब इलेक्ट्रोमैकेनिकल टेलीप्रिंटर का उपयोग कंप्यूटर आउटपुट उपकरण के रूप में किया जाता था, तो प्रत्येक मुद्रित पंक्ति के अंत में एक या अधिक शून्य अक्षर भेजे जाते थे जिससे तंत्र को अगली पंक्ति पर पहली प्रिंटिंग स्थिति में लौटने का समय मिल सकता है । छिद्रित टेप पर, चरित्र को पूर्ण रूप भी छेद के बिना दर्शाया जाता है, इसलिए एक नया अनपेक्षित टेप प्रारंभ में शून्य वर्णों से भरा होता है, और अधिकांशतः नल के ऊपर टेप में नए वर्णों को छिद्रित करके शून्य वर्णों के आरक्षित स्थान पर पाठ डाला जा सकता है।
इस वर्ण का मूल अर्थ एनओपी जैसा था - जब इसे प्रिंटर या टर्मिनल पर भेजा जाता है, तो इसका कोई प्रभाव नहीं पड़ता है (चूँकि, कुछ टर्मिनल इसे गलत विधि से स्पेस के रूप में प्रदर्शित करते हैं)। जब इलेक्ट्रोमैकेनिकल टेलीप्रिंटर का उपयोग कंप्यूटर आउटपुट उपकरण के रूप में किया जाता था, तो प्रत्येक मुद्रित पंक्ति के अंत में एक या अधिक शून्य अक्षर भेजे जाते थे जिससे तंत्र को अगली पंक्ति पर पहली प्रिंटिंग स्थिति में लौटने का समय मिल सकता है । छिद्रित टेप पर, चरित्र को पूर्ण रूप भी छेद के बिना दर्शाया जाता है, इसलिए एक नया अनपेक्षित टेप प्रारंभ में शून्य वर्णों से भरा होता है, और अधिकांशतः नल के ऊपर टेप में नए वर्णों को छिद्रित करके शून्य वर्णों के आरक्षित स्थान पर पाठ डाला जा सकता है।
 
आज प्रोग्रामिंग लैंग्वेज C (प्रोग्रामिंग लैंग्वेज) और इसके डेरिवेटिव और कई डेटा फॉर्मेट में कैरेक्टर का बहुत अधिक महत्व है, जहां यह एक [[ स्ट्रिंग (कंप्यूटर विज्ञान) | स्ट्रिंग (कंप्यूटर विज्ञान)]] के अंत को दर्शाने के लिए उपयोग किए जाने वाले आरक्षित कैरेक्टर के रूप में कार्य करता है।<ref name=":0">"A ''string'' is a contiguous sequence of characters terminated by and including the first null character" — ANSI/ISO 9899:1990 (the ANSI C standard), section 7.1.1</ref>  अधिकांशतः एक [[अशक्त-समाप्त स्ट्रिंग]] कहा जाता है।<ref name=":1">{{citation |title=Working Draft, Standard for Programming Language C++ |type=ISO 14882 standard working draft |date=28 February 2011 |publisher=[[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|IEC]] |page=427 |url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf |access-date=27 February 2013 |id=N3242=11-0012 |quote=A ''null-terminated byte string'', or NTBS, is a character sequence whose highest-addressed element with defined content has the value zero (the ''terminating null character''); no other element in the sequence has the value zero.}}</ref> यह स्ट्रिंग को केवल एक बाइट के ओवरहेड के साथ किसी भी लम्बाई की अनुमति देता है; एक गिनती को संग्रहित करने के विकल्प के लिए या तो 255 की स्ट्रिंग लंबाई सीमा या एक से अधिक बाइट के ओवरहेड की आवश्यकता होती है (शून्य-समाप्त स्ट्रिंग आलेख में वर्णित अन्य लाभ/हानि हैं)।
 
 
'''ने वाले आरक्षित कैरेक्टर के रूप में कार्य करता है।<ref name=":0" />  अधिकांश'''


आज प्रोग्रामिंग लैंग्वेज C (प्रोग्रामिंग लैंग्वेज) और इसके डेरिवेटिव और कई डेटा फॉर्मेट में कैरेक्टर का बहुत अधिक महत्व है, जहां यह एक [[ स्ट्रिंग (कंप्यूटर विज्ञान) |स्ट्रिंग (कंप्यूटर विज्ञान)]] के अंत को दर्शाने के लिए उपयोग किए जाने वाले आरक्षित कैरेक्टर के रूप में कार्य करता है।<ref name=":0">"A ''string'' is a contiguous sequence of characters terminated by and including the first null character" — ANSI/ISO 9899:1990 (the ANSI C standard), section 7.1.1</ref> अधिकांशतः एक [[अशक्त-समाप्त स्ट्रिंग]] कहा जाता है।<ref name=":1">{{citation |title=Working Draft, Standard for Programming Language C++ |type=ISO 14882 standard working draft |date=28 February 2011 |publisher=[[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|IEC]] |page=427 |url=http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf |access-date=27 February 2013 |id=N3242=11-0012 |quote=A ''null-terminated byte string'', or NTBS, is a character sequence whose highest-addressed element with defined content has the value zero (the ''terminating null character''); no other element in the sequence has the value zero.}}</ref> यह स्ट्रिंग को केवल एक बाइट के ओवरहेड के साथ किसी भी लम्बाई की अनुमति देता है; एक गिनती को संग्रहित करने के विकल्प के लिए या तो 255 की स्ट्रिंग लंबाई सीमा या एक से अधिक बाइट के ओवरहेड की आवश्यकता होती है (शून्य-समाप्त स्ट्रिंग आलेख में वर्णित अन्य लाभ/हानि हैं)।
== प्रतिनिधित्व                                                                                                                    ==
== प्रतिनिधित्व                                                                                                                    ==
शून्य वर्ण को अधिकांशतः स्रोत कोड, स्ट्रिंग शाब्दिक या वर्ण स्थिरांक में एस्केप अनुक्रम \0 के रूप में दर्शाया जाता है।<ref name="KandR38">Kernighan and Ritchie, ''C'', p. 38</ref> कई भाषाओं में (जैसे सी, जिसने इस अंकन को प्रस्तुत किया), यह एक अलग एस्केप अनुक्रम नहीं है, किंतु एकल ऑक्टल अंक 0 के साथ एक ऑक्टल एस्केप अनुक्रम है; परिणामस्वरूप, \0 के बाद 0 से 7 तक कोई भी अंक नहीं आना चाहिए; अन्यथा इसकी व्याख्या एक लंबे अष्टाधारी पलायन क्रम की प्रारंभिक के रूप में की जाती है।<ref>In [[YAML]] this combination is a [http://www.yaml.org/spec/1.2/spec.html#id2776092 separate escape sequence].</ref> अन्य एस्केप अनुक्रम जो विभिन्न भाषाओं में उपयोग में पाए जाते हैं वे हैं <code>\000</code>, <code>\x00</code>, <code>\z</code>, या <code>\u0000</code>. प्रतिशत कोड<code>%00</code>. के साथ [[यूआरएल]] में एक शून्य वर्ण रखा जा सकता है।
शून्य वर्ण को अधिकांशतः स्रोत कोड, स्ट्रिंग शाब्दिक या वर्ण स्थिरांक में एस्केप अनुक्रम \0 के रूप में दर्शाया जाता है।<ref name="KandR38">Kernighan and Ritchie, ''C'', p. 38</ref> कई भाषाओं में (जैसे सी, जिसने इस अंकन को प्रस्तुत किया), यह एक अलग एस्केप अनुक्रम नहीं है, किंतु एकल ऑक्टल अंक 0 के साथ एक ऑक्टल एस्केप अनुक्रम है; परिणामस्वरूप, \0 के बाद 0 से 7 तक कोई भी अंक नहीं आना चाहिए; अन्यथा इसकी व्याख्या एक लंबे अष्टाधारी पलायन क्रम की प्रारंभिक के रूप में की जाती है।<ref>In [[YAML]] this combination is a [http://www.yaml.org/spec/1.2/spec.html#id2776092 separate escape sequence].</ref> अन्य एस्केप अनुक्रम जो विभिन्न भाषाओं में उपयोग में पाए जाते हैं वे हैं <code>\000</code>, <code>\x00</code>, <code>\z</code>, या <code>\u0000</code>. प्रतिशत कोड<code>%00</code>. के साथ [[यूआरएल]] में एक शून्य वर्ण रखा जा सकता है।


एक अशक्त वर्ण का प्रतिनिधित्व करने की क्षमता का सदैव यह अर्थ नहीं होता है कि परिणामी स्ट्रिंग की सही व्याख्या की जाएगी, क्योंकि कई प्रोग्राम अशक्त को स्ट्रिंग का अंत मानेंगे। इस प्रकार इसे टाइप करने की क्षमता ([[अनियंत्रित उपयोगकर्ता इनपुट]] के स्थिति में) एक [[भेद्यता (कंप्यूटिंग)]] बनाता है जिसे नल बाइट इंजेक्शन के रूप में जाना जाता है और सुरक्षा शोषण का कारण बन सकता है।<ref>[http://projects.webappsec.org/Null-Byte-Injection Null Byte Injection] WASC Threat Classification Null Byte Attack section.</ref>
एक अशक्त वर्ण का प्रतिनिधित्व करने की क्षमता का सदैव यह अर्थ नहीं होता है कि परिणामी स्ट्रिंग की सही व्याख्या की जाएगी, क्योंकि कई प्रोग्राम अशक्त को स्ट्रिंग का अंत मानेंगे। इस प्रकार इसे टाइप करने की क्षमता ([[अनियंत्रित उपयोगकर्ता इनपुट]] के स्थिति में) एक [[भेद्यता (कंप्यूटिंग)]] बनाता है जिसे नल बाइट इंजेक्शन के रूप में जाना जाता है और सुरक्षा शोषण का कारण बन सकता है।<ref>[http://projects.webappsec.org/Null-Byte-Injection Null Byte Injection] WASC Threat Classification Null Byte Attack section.</ref>

Revision as of 10:51, 28 June 2023


शून्य वर्ण (शून्य टर्मिनेटर भी) शून्य मान वाला एक नियंत्रण वर्ण है।।[1][2][3][4] यह कई कैरेक्टर सेटों में उपस्थित है, जिनमें बॉडॉट और आईटीए2 कोड, आईएसओ/आईईसी 646 (या एएससीआईआई), सी0 कंट्रोल कोड, यूनिवर्सल कोडेड कैरेक्टर सेट (या यूनिकोड) और ईबीसीडीआईसी द्वारा परिभाषित कैरेक्टर सेट सम्मिलित हैं। यह लगभग सभी मुख्यधारा प्रोग्रामिंग भाषाओं में उपलब्ध है।[5] इसे अधिकांशतः नल (या नल चूँकि कुछ संदर्भों में उस शब्द का उपयोग शून्य सूचक के लिए किया जाता है) के रूप में संक्षिप्त किया जाता है। 8-बिट कोड में इसे नल बाइट के रूप में जाना जाता है।

इस वर्ण का मूल अर्थ एनओपी जैसा था - जब इसे प्रिंटर या टर्मिनल पर भेजा जाता है, तो इसका कोई प्रभाव नहीं पड़ता है (चूँकि, कुछ टर्मिनल इसे गलत विधि से स्पेस के रूप में प्रदर्शित करते हैं)। जब इलेक्ट्रोमैकेनिकल टेलीप्रिंटर का उपयोग कंप्यूटर आउटपुट उपकरण के रूप में किया जाता था, तो प्रत्येक मुद्रित पंक्ति के अंत में एक या अधिक शून्य अक्षर भेजे जाते थे जिससे तंत्र को अगली पंक्ति पर पहली प्रिंटिंग स्थिति में लौटने का समय मिल सकता है । छिद्रित टेप पर, चरित्र को पूर्ण रूप भी छेद के बिना दर्शाया जाता है, इसलिए एक नया अनपेक्षित टेप प्रारंभ में शून्य वर्णों से भरा होता है, और अधिकांशतः नल के ऊपर टेप में नए वर्णों को छिद्रित करके शून्य वर्णों के आरक्षित स्थान पर पाठ डाला जा सकता है।

आज प्रोग्रामिंग लैंग्वेज C (प्रोग्रामिंग लैंग्वेज) और इसके डेरिवेटिव और कई डेटा फॉर्मेट में कैरेक्टर का बहुत अधिक महत्व है, जहां यह एक स्ट्रिंग (कंप्यूटर विज्ञान) के अंत को दर्शाने के लिए उपयोग किए जाने वाले आरक्षित कैरेक्टर के रूप में कार्य करता है।[6] अधिकांशतः एक अशक्त-समाप्त स्ट्रिंग कहा जाता है।[7] यह स्ट्रिंग को केवल एक बाइट के ओवरहेड के साथ किसी भी लम्बाई की अनुमति देता है; एक गिनती को संग्रहित करने के विकल्प के लिए या तो 255 की स्ट्रिंग लंबाई सीमा या एक से अधिक बाइट के ओवरहेड की आवश्यकता होती है (शून्य-समाप्त स्ट्रिंग आलेख में वर्णित अन्य लाभ/हानि हैं)।

प्रतिनिधित्व

शून्य वर्ण को अधिकांशतः स्रोत कोड, स्ट्रिंग शाब्दिक या वर्ण स्थिरांक में एस्केप अनुक्रम \0 के रूप में दर्शाया जाता है।[8] कई भाषाओं में (जैसे सी, जिसने इस अंकन को प्रस्तुत किया), यह एक अलग एस्केप अनुक्रम नहीं है, किंतु एकल ऑक्टल अंक 0 के साथ एक ऑक्टल एस्केप अनुक्रम है; परिणामस्वरूप, \0 के बाद 0 से 7 तक कोई भी अंक नहीं आना चाहिए; अन्यथा इसकी व्याख्या एक लंबे अष्टाधारी पलायन क्रम की प्रारंभिक के रूप में की जाती है।[9] अन्य एस्केप अनुक्रम जो विभिन्न भाषाओं में उपयोग में पाए जाते हैं वे हैं \000, \x00, \z, या \u0000. प्रतिशत कोड%00. के साथ यूआरएल में एक शून्य वर्ण रखा जा सकता है।

एक अशक्त वर्ण का प्रतिनिधित्व करने की क्षमता का सदैव यह अर्थ नहीं होता है कि परिणामी स्ट्रिंग की सही व्याख्या की जाएगी, क्योंकि कई प्रोग्राम अशक्त को स्ट्रिंग का अंत मानेंगे। इस प्रकार इसे टाइप करने की क्षमता (अनियंत्रित उपयोगकर्ता इनपुट के स्थिति में) एक भेद्यता (कंप्यूटिंग) बनाता है जिसे नल बाइट इंजेक्शन के रूप में जाना जाता है और सुरक्षा शोषण का कारण बन सकता है।[10]

कैरेट नोटेशन में शून्य वर्ण ^@ है। कुछ कीबोर्ड पर, कोई व्यक्ति Ctrl दबाकर और @ दबाकर एक शून्य वर्ण अंकित कर सकता है (यूएस लेआउट पर केवल Ctrl+2 अधिकांशतः काम करेगा, @ चिह्न प्राप्त करने के लिए ⇧ Shift की कोई आवश्यकता नहीं है)।

शून्य के लिए हेक्साडेसिमल अंकन 00 है। बेस 64 स्ट्रिंग AA==को डिकोड करने से भी शून्य वर्ण प्राप्त होता है।

प्रलेखन में, अशक्त वर्ण को कभी-कभी एकल-एम (टाइपोग्राफी)-चौड़ाई के प्रतीक के रूप में दर्शाया जाता है जिसमें नल अक्षर होते हैं। यूनिकोड में इसके लिए एक वर्ण है: U+2400 SYMBOL FOR NULL.

एनकोडिंग

सभी आधुनिक वर्ण सेटों में, शून्य वर्ण का कोड बिंदु मान शून्य होता है। अधिकांश एनकोडिंग में, इसे शून्य मान वाली एकल कोड इकाई में अनुवादित किया जाता है। उदाहरण के लिए, यूटीएफ-8 में यह एक शून्य बाइट है। चूँकि, यूटीएफ-8 या संशोधितयूटीएफ-8 संशोधितयूटीएफ-8 में नल वर्ण को दो बाइट्स के रूप में एन्कोड किया गया है: 0xC0, 0x80। यह बाइट को शून्य के मान के साथ अनुमति देता है, जो अब किसी भी वर्ण के लिए उपयोग नहीं किया जाता है, जिसे स्ट्रिंग टर्मिनेटर के रूप में उपयोग किया जाता है।

संदर्भ

  1. ASCII format for Network Interchange. IETF. sec. 5.2. doi:10.17487/RFC0020. RFC 20. NUL (Null): The all-zeros character which may serve to accomplish time fill and media fill.
  2. "The set of control characters of the ISO 646" (PDF). Secretariat ISO/TC 97/SC 2. 1975-12-01. p. 4.4. Archived from the original (PDF) on 2014-05-12. Position: 0/0, Name: Null, Abbreviation: Nul
  3. "Unicode Character 'NULL' (U+0000)". Retrieved 2018-10-20.
  4. "C0 Controls and Basic Latin" (PDF). Unicode Consortium. 2018. Retrieved 2018-10-20.
  5. "A byte with all bits set to 0, called the null character, shall exist in the basic execution character set; it is used to terminate a character string literal." — ANSI/ISO 9899:1990 (the ANSI C standard), section 5.2.1
  6. "A string is a contiguous sequence of characters terminated by and including the first null character" — ANSI/ISO 9899:1990 (the ANSI C standard), section 7.1.1
  7. Working Draft, Standard for Programming Language C++ (PDF) (ISO 14882 standard working draft), ISO/IEC, 28 February 2011, p. 427, N3242=11-0012, retrieved 27 February 2013, A null-terminated byte string, or NTBS, is a character sequence whose highest-addressed element with defined content has the value zero (the terminating null character); no other element in the sequence has the value zero.
  8. Kernighan and Ritchie, C, p. 38
  9. In YAML this combination is a separate escape sequence.
  10. Null Byte Injection WASC Threat Classification Null Byte Attack section.


बाहरी संबंध