बाइनरी से पाठ
बाइनरी और टेक्स्ट के बीच तुरंत कनवर्ट करें।
बाइनरी प्रतिनिधित्व का संक्षिप्त इतिहास
बाइनरी कंप्यूटर की मूल भाषा है, हर अक्षर, संख्या और निर्देश अंततः 0 और 1 के अनुक्रम के रूप में दिखाया जाता है, पर यह विचार कंप्यूटर से 250 साल पुराना है। Gottfried Wilhelm Leibniz ने "Explication de l'Arithmétique Binaire" लिखी (1703 में फ़्रेंच एकेडमी ऑफ़ साइंसेज़ को प्रस्तुत, 1705 में Mémoires में मुद्रित), यह बाइनरी अंकगणित का पहला औपचारिक पाश्चात्य वर्णन था। Leibniz आंशिक रूप से चीनी I Ching के त्रिग्राम और षट्कोणों से प्रेरित थे, जो हर भविष्यवाणी पैटर्न को टूटी हुई या अटूट रेखाओं के छह-पंक्ति ढेर के रूप में कोड करते हैं (मूलतः 6-बिट बाइनरी)। George Boole की An Investigation of the Laws of Thought (1854) ने बाइनरी को बीजगणितीय आधार दिया (AND, OR, NOT, exclusive-or) जो आज भी हर डिजिटल सर्किट का आधार है। Claude Shannon की MIT मास्टर थीसिस "A Symbolic Analysis of Relay and Switching Circuits" (अगस्त 1937 में प्रस्तुत) ने वह छलांग लगाई जिसने बूलियन बीजगणित को विद्युत अभियांत्रिकी से जोड़ा: हर रिले-और-स्विच परिपथ एक बूलियन अभिव्यक्ति से मेल खाता है, और इसके विपरीत। Shannon की थीसिस को व्यापक रूप से 20वीं सदी की सबसे प्रभावशाली मास्टर थीसिस माना जाता है। पहले इलेक्ट्रॉनिक कंप्यूटर दशमलव (ENIAC, 1945, आंतरिक रूप से दशमलव काउंटर का उपयोग करता था) और बाइनरी (Manchester Baby, जून 1948, पहला stored-program बाइनरी कंप्यूटर; EDSAC, मई 1949, पहला व्यावहारिक) का मिश्रण थे; 1950 के दशक की शुरुआत तक बाइनरी सार्वभौमिक डिफ़ॉल्ट था।
8-बिट byte बाद में आया। शब्द "byte" को Werner Buchholz ने IBM में जून 1956 में IBM Stretch कंप्यूटर के डिज़ाइन के दौरान गढ़ा, मूल रूप से विभिन्न चौड़ाइयों के साथ (6-बिट, 8-बिट, 9-बिट)। 8-बिट byte को IBM ने System/360 की 7 अप्रैल 1964 को घोषणा के साथ मानकीकृत किया; उस बिंदु से, "एक byte" का अर्थ उद्योग भर में 8 बिट समझा जाने लगा। (पुराना साहित्य कभी-कभी असंदिग्ध होने के लिए "octet" स्पष्ट करता है, IETF विनिर्देश इसी कारण "octet" को प्राथमिकता देते हैं।)
वर्ण एन्कोडिंग, अक्षरों को बिट्स में बदलना
बाइनरी सबसे निचली परत है; उसके ऊपर की परत है वर्ण एन्कोडिंग जो अक्षरों और प्रतीकों को विशिष्ट बिट पैटर्न में मैप करती है। Baudot कोड (Émile Baudot, 1870 में आविष्कृत, 1874 में पेटेंट) पहली व्यापक रूप से उपयोग की गई बाइनरी टेक्स्ट एन्कोडिंग थी, प्रति वर्ण 5 बिट, टेलीप्रिंटर और Telex नेटवर्क द्वारा एक सदी से अधिक के लिए उपयोग की गई। 5 बिट केवल 32 कोड देते हैं, जिसने Baudot कोड को shift वर्णों का उपयोग करने पर मजबूर किया (एक अक्षरों के लिए, एक संख्या/विराम के लिए) ताकि एड्रेसेबल सेट का विस्तार हो सके। ASCII (American Standard Code for Information Interchange) 17 जून 1963 को ANSI X3.4-1963 के रूप में American Standards Association द्वारा प्रकाशित हुआ। ASCII 128 वर्णों को कोड करने के लिए 7 बिट का उपयोग करता है: नियंत्रण कोड (0-31), विराम चिह्न और अंक (32-64), बड़े अक्षर (65-90), अधिक विराम (91-96), छोटे अक्षर (97-122), अंतिम विराम (123-127)। 7-बिट चौड़ाई पेपर-टेप टेलीग्राफ़ी हार्डवेयर के साथ संगतता के लिए चुनी गई। ASCII अगले दो दशकों के लिए प्रमुख अंग्रेज़ी-भाषा एन्कोडिंग बन गया; कैनोनिकल संशोधन ANSI X3.4-1986 मूलतः समान है और जब लोग आज "ASCII" कहते हैं, यही अर्थ होता है।
Extended ASCII / ISO 8859 परिवार (ISO 8859-1 1987 में प्रकाशित, बाक़ी 1990 के दशक में) ने 8-बिट byte के उच्च 128 वर्णों को क्षेत्रीय वर्णमालाओं से भरा, Latin-1 ने पश्चिमी यूरोपीय भाषाओं को कवर किया, Latin-2 पूर्वी यूरोपीय, Latin-5 तुर्की, Cyrillic-1, Greek-1, Arabic-1, Hebrew-1, Thai-1। इसने पंद्रह असंगत 8-बिट एन्कोडिंग बनाईं, 0xE9 Latin-1 में é था, परंतु Cyrillic-1 में अलग वर्ण, सख़्त ASCII में अपरिभाषित, और Mac Roman में फिर एक और वर्ण। यह बेमेल प्रसिद्ध mojibake स्थिति पैदा करता है (जापानी: 文字化け, "वर्ण-परिवर्तन", एन्कोडिंग बेमेल से भ्रष्ट दिखने वाला टेक्स्ट)।
Unicode परियोजना उत्तर के रूप में आरंभ हुई। Unicode Consortium 3 जनवरी 1991 को निगमित हुआ; Unicode 1.0 अक्टूबर 1991 में लगभग 7,000 वर्णों के साथ प्रकाशित हुआ। Unicode 16.0 तक (10 सितंबर 2024 को रिलीज़) मानक 168 लिपियों में 154,998 वर्णों को कवर करता है। Unicode एक code-point प्रणाली है, हर वर्ण के लिए एक अद्वितीय संख्यात्मक पहचान, परंतु यह सीधे एक बाइनरी एन्कोडिंग नहीं है। Unicode के कई एन्कोडिंग मौजूद हैं: UTF-32 (प्रति वर्ण 4 बाइट, स्थिर-चौड़ाई), UTF-16 (2 या 4 बाइट, परिवर्तनीय), और आधुनिक वेब के लिए प्रमुख: UTF-8।
UTF-8 को Ken Thompson ने Rob Pike के साथ New Jersey के एक diner में place mat पर लगभग 2 सितंबर 1992 को डिज़ाइन किया; Plan 9 8 सितंबर तक उस पर चल रहा था। UTF-8 परिवर्तनीय लंबाई का है: ASCII वर्णों के लिए 1 बाइट (U+0000 से U+007F), U+0080 से U+07FF के लिए 2 बाइट, U+0800 से U+FFFF के लिए 3 बाइट, U+10000 से U+10FFFF के लिए 4 बाइट। प्रत्येक बाइट के उच्च बिट इसकी multi-byte अनुक्रम में स्थिति का संकेत देते हैं (0xxxxxxx = 1-बाइट ASCII, 110xxxxx = 2-बाइट अनुक्रम का पहला बाइट, 10xxxxxx = निरंतरता बाइट, आदि), जो UTF-8 को स्व-समकालिक बनाता है, आप किसी भी यादृच्छिक स्थिति से डिकोडिंग शुरू कर सकते हैं और अगले कुछ बाइट्स को देखकर अगली वर्ण सीमा खोज सकते हैं। UTF-8 ASCII के साथ पश्च-संगत भी है: हर ASCII फ़ाइल एक वैध UTF-8 फ़ाइल है। 2026 तक, W3Techs रिपोर्ट करता है कि लगभग 98.9% सभी वेब पेज UTF-8 को अपनी एन्कोडिंग के रूप में घोषित करते हैं, यह दुनिया की टेक्स्ट एन्कोडिंग है, बहुत व्यापक रूप से।
ASCII बाइनरी उदाहरण
कुछ प्रतिनिधि ASCII वर्ण उनके 8-बिट बाइनरी रूप में (अग्रणी 0 के साथ क्योंकि ASCII तकनीकी रूप से 7-बिट है, पर byte-संरेखित):
- 'A' (बड़ा A) = दशमलव 65 =
01000001 - 'a' (छोटा a) = दशमलव 97 =
01100001(टिप्पणी: 'A' से ठीक एक बिट से भिन्न, बिट 5, यही कारण है कि 0x20 के साथ XOR वाला case-conversion ट्रिक काम करता है) - '0' (अंक शून्य) = दशमलव 48 =
00110000 - '9' (अंक नौ) = दशमलव 57 =
00111001 - ' ' (स्पेस) = दशमलव 32 =
00100000 - '\n' (नई पंक्ति / line feed) = दशमलव 10 =
00001010 - '!' (विस्मयादिबोधक चिह्न) = दशमलव 33 =
00100001
"Hello" ASCII में 01001000 01100101 01101100 01101100 01101111 बन जाता है, पाँच बाइट, प्रति वर्ण एक। UTF-8 में यह समान है क्योंकि हर ASCII वर्ण एक वैध 1-बाइट UTF-8 वर्ण भी है। "Café" UTF-8 में 01000011 01100001 01100110 11000011 10101001 है, चार वर्ण, परंतु पाँच बाइट, क्योंकि é (U+00E9) UTF-8 के तहत दो बाइट (11000011 10101001) मांगता है।
UTF-8 multi-byte एन्कोडिंग, यांत्रिक रूप से
UTF-8 के एन्कोडिंग नियम बाइट स्थिति को इंगित करने के लिए विशिष्ट उच्च-बिट पैटर्न का उपयोग करते हैं। 1-बाइट (ASCII श्रेणी U+0000 से U+007F): 0xxxxxxx, उच्च बिट 0 है, शेष 7 बिट code point हैं। 2-बाइट (U+0080 से U+07FF): 110xxxxx 10xxxxxx, पहला बाइट 110 से शुरू होता है, निरंतरता बाइट 10 से; x बिट मिलकर 11-बिट code point देते हैं। 3-बाइट (U+0800 से U+FFFF): 1110xxxx 10xxxxxx 10xxxxxx, पहला बाइट 1110 से शुरू, दो निरंतरता बाइट; 16-बिट code point। 4-बाइट (U+10000 से U+10FFFF): 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx, इमोजी सहित पूरे Unicode स्पेस को कवर करता है। रूसी अक्षर п (U+043F) UTF-8 में 2 बाइट चाहता है (11010000 10111111); चीनी वर्ण 中 (U+4E2D) 3 बाइट चाहता है; इमोजी 🎉 (U+1F389) 4 बाइट चाहता है। टेक्स्ट को UTF-8 बाइनरी के रूप में एन्कोड करना हमेशा एक वैध अनुक्रम उत्पन्न करता है; डिकोडिंग के लिए जाँचना आवश्यक है कि निरंतरता बाइट्स पर 10 उपसर्ग हो (अन्यथा इनपुट अमान्य UTF-8 है और डिकोडर आम तौर पर बुरे अनुक्रम को प्रतिस्थापन वर्ण U+FFFD से बदल देता है)।
अंकन परंपराएँ
बाइनरी टेक्स्ट प्रकृति में कई परंपराओं में दिखाई देता है, सभी एक ही अंतर्निहित बाइट्स को संदर्भित करते हैं। स्पेस-पृथक्कृत बाइट्स: 01001000 01100101 01101100 01101100 01101111, सबसे पठनीय रूप, ट्यूटोरियल और पहेलियों में सामान्य। बिना-स्पेस निरंतर: 0100100001100101011011000110110001101111, अधिक संक्षिप्त, पाठक को यह जानने की आवश्यकता है कि बाइट सीमाएँ हर 8 अंकों पर हैं। अल्पविराम-पृथक्कृत: 01001000,01100101,01101100,01101100,01101111, CSV-एन्कोडेड परीक्षण डेटा में सामान्य। हेक्स जोड़े (Base16): 48 65 6c 6c 6f, समान बाइट्स दो हेक्स अंक में दिखाए गए, आठ बाइनरी के बजाय; प्रोग्रामर-सामना करने वाले उपकरणों में अधिक संक्षिप्त और सामान्य (hexdump, हेक्स संपादक)। दशमलव: 72 101 108 108 111, हर बाइट का अंतर्निहित पूर्णांक मान। यह टूल बाइनरी-से-टेक्स्ट के लिए स्पेस-पृथक्कृत, अल्पविराम-पृथक्कृत और निरंतर बाइनरी इनपुट स्वीकार करता है; टेक्स्ट-से-बाइनरी आउटपुट के लिए स्पेस-पृथक्कृत 8-बिट बाइनरी उत्पन्न करता है।
सामान्य उपयोग
- कंप्यूटर विज्ञान शिक्षा। बाइनरी प्रतिनिधित्व CS101 में मौलिक हैं, छात्र अपने नाम को कोड करके और वापस पढ़कर सीखते हैं कि "byte" क्या है।
- छिपे संदेश पहेली। Escape rooms, geocaching निर्देशांक, ARG (alternate reality game) सुराग, capture-the-flag चुनौतियाँ, सब बाइनरी-एन्कोडेड टेक्स्ट को सामान्य सिफर के रूप में उपयोग करते हैं क्योंकि यह तुरंत "बाइनरी" के रूप में पहचानने योग्य है पर पाठक को रूपांतरण जानना चाहिए।
- स्टेगानोग्राफ़ी। संदेशों को सादे दृश्य में छिपाना उन्हें ऐसे बाइनरी के रूप में एन्कोड करके जो शोर जैसा दिखे, किसी छवि के सबसे महत्वहीन-बिट डेटा में एक बाइनरी स्ट्रिंग, या ईमेल के अंतिम whitespace में छिपी हुई।
- एन्कोडिंग समस्याओं का डिबगिंग। जब "Café" "Café" या "€" के रूप में "€" के बजाय दिखे, तो बाइट्स बताते हैं क्या हुआ, एक UTF-8 अनुक्रम Latin-1 के रूप में व्याख्यायित हो गया या इसके विपरीत। वास्तविक बाइनरी प्रतिनिधित्व देखना एन्कोडिंग बेमेल को स्पष्ट करता है।
- फ़ोरेंसिक विश्लेषण। भ्रष्ट फ़ाइलों, आंशिक बैकअप या क्षतिग्रस्त भंडारण से टेक्स्ट पुनर्प्राप्त करना अक्सर कच्चे बाइट्स को देखने और हाथ से डिकोड करने का अर्थ है।
- निम्न-स्तरीय प्रोग्रामिंग सीखना। बिटवाइज़ ऑपरेशन, बिट शिफ़्टिंग, मास्क निर्माण, सब सहज हो जाते हैं जब आप मानों के बाइनरी प्रतिनिधित्व को देख सकें।
- बाइनरी कला और टैटू। शादी के तोहफ़े के रूप में बाइनरी में "I love you", XKCD-शैली बाइनरी टी-शर्ट, बाइनरी संख्या टैटू। शुद्ध 0 और 1 की सौंदर्यबोध की एक छोटी पर वास्तविक उप-संस्कृति है।
जानने योग्य एन्कोडिंग पकड़
एन्कोडिंग बेमेल से Mojibake। समान बाइट अनुक्रम विभिन्न एन्कोडिंग के तहत व्याख्यायित होने पर अलग (और आमतौर पर खराब) टेक्स्ट उत्पन्न करता है। 0xE9 Latin-1 में é है पर एक अमान्य UTF-8 अनुक्रम की शुरुआत है (कोई भी बाइट ≥ 0x80 या तो निरंतरता बाइट होना चाहिए या multi-byte अनुक्रम की शुरुआत)। जब UTF-8 फ़ाइल को Latin-1 के रूप में खोला जाता है, हर multi-byte UTF-8 वर्ण 2-4 खराब Latin-1 वर्णों में बदल जाता है, कैनोनिकल "Café" → "Café" विफलता मोड। BOM (Byte Order Mark)। Unicode फ़ाइल की शुरुआत में 2-3 बाइट अनुक्रम जो byte order इंगित करता है: UTF-16 little-endian FF FE से शुरू होता है, UTF-16 big-endian FE FF से, UTF-8 BOM (कम उपयोग, कभी-कभी "UTF-8 with BOM" कहा जाता है) EF BB BF से। BOM Unicode एन्कोडिंग को अलग करने में मदद करता है पर केवल UTF-16 और UTF-32 के लिए अनिवार्य है; IETF UTF-8 फ़ाइलों में जोड़ने को हतोत्साहित करती है क्योंकि यह उन उपकरणों को तोड़ता है जो फ़ाइल को सामान्य सामग्री से शुरू होने की अपेक्षा रखते हैं। Endianness UTF-16 और UTF-32 के लिए मायने रखता है (जो multi-byte कोड इकाई के बाइट्स का क्रम तय करते हैं) पर UTF-8 के लिए नहीं (byte-stream एन्कोडेड, क्रम spec द्वारा निर्धारित, हार्डवेयर द्वारा नहीं)।
ASCII संदर्भ तालिका
गोपनीयता: यहाँ भी केवल-ब्राउज़र क्यों मायने रखता है
बाइनरी रूपांतरण निर्दोष लगते हैं, पर रूपांतरित किया जा रहा टेक्स्ट ठीक उसी प्रकार की चीज़ है जहाँ गोपनीयता मायने रखती है: मित्रों के बीच छिपे संदेश पहेली, स्टेगानोग्राफ़ी प्रयोगों के लिए एन्कोड की गई गोपनीय वाक्यांश, एन्कोडिंग समस्याओं के लिए डिबग की जा रही संवेदनशील स्ट्रिंग, या बस कुछ भी जहाँ पाठक उम्मीद करता है कि बाइनरी एक निजी प्रतिनिधित्व हो। यह टूल पूरी तरह से आपके ब्राउज़र में JavaScript के माध्यम से चलता है, रूपांतरण करते समय DevTools की Network टैब में सत्यापित करें, या लोड होने के बाद पेज को ऑफ़लाइन (एयरप्लेन मोड) कर दें और कनवर्टर अब भी काम करता है। पहेली सुराग, संवेदनशील डिबगिंग स्ट्रिंग या किसी ऐसे टेक्स्ट के लिए सुरक्षित जिसे आप अजनबी की हार्ड डिस्क पर कॉपी होते नहीं देखना चाहते।
अक्सर पूछे जाने वाले प्रश्न
बाइनरी इनपुट किस फ़ॉर्मेट में होना चाहिए?
रिक्त स्थान से अलग किए गए 8-बिट बाइनरी मानों को दर्ज करें (उदाहरण: «01001000 01101001»)। टूल बिना रिक्त स्थान के भी मानों को स्वीकार करता है यदि प्रत्येक बाइट ठीक 8 अंकों की हो, या अल्पविराम से अलग किए गए हों।
क्या यह इमोजी या गैर-लैटिन वर्णों का समर्थन करता है?
टेक्स्ट→बाइनरी दिशा किसी भी Unicode वर्ण का समर्थन करती है · प्रत्येक वर्ण UTF-8 एन्कोडिंग में अपने पूर्ण बाइनरी प्रतिनिधित्व में विस्तारित होता है। बाइनरी→टेक्स्ट के लिए, प्रत्येक 8-बिट समूह को ASCII बाइट (0-255) के रूप में डीकोड किया जाता है।
प्रति वर्ण 8 अंक क्यों?
प्रत्येक 8 बाइनरी अंकों (बिट्स) का समूह एक बाइट का प्रतिनिधित्व करता है। ASCII 7 बिट्स (मान 0-127) का उपयोग करता है लेकिन आमतौर पर 8 बिट्स में एक अग्रणी 0 के साथ प्रदर्शित होता है। एक बाइट 256 विभिन्न मान (0-255) का प्रतिनिधित्व कर सकता है, जो सभी मानक कीबोर्ड वर्णों को कवर करता है।
बाइनरी वास्तव में कहाँ से आया है?
गणितीय विचार कंप्यूटर से 250 साल पुराना है। Gottfried Wilhelm Leibniz ने 1703 में बाइनरी अंकगणित का पहला औपचारिक पाश्चात्य वर्णन लिखा ("Explication de l'Arithmétique Binaire"), आंशिक रूप से चीनी I Ching के षट्कोणों से प्रेरित। George Boole की Laws of Thought (1854) ने बाइनरी को इसके बीजगणितीय आधार दिए (AND, OR, NOT)। Claude Shannon की MIT थीसिस (1937) ने बूलियन बीजगणित को विद्युत रिले परिपथ से जोड़ा, डिजिटल इलेक्ट्रॉनिक्स के लिए संस्थापक क्षण। पहले इलेक्ट्रॉनिक बाइनरी कंप्यूटर 1940 के दशक के अंत में आए (Manchester Baby जून 1948, EDSAC मई 1949)।
ASCII और UTF-8 के बीच क्या अंतर है?
ASCII (1963) एक 7-बिट स्थिर-चौड़ाई एन्कोडिंग है जो 128 वर्णों को कवर करता है, बुनियादी अंग्रेज़ी वर्णमाला, अंक, सामान्य विराम, नियंत्रण कोड। UTF-8 (Thompson + Pike, 1992) पूरे Unicode मानक की परिवर्तनीय-लंबाई एन्कोडिंग है (~155,000 वर्ण सितंबर 2024 के Unicode 16.0 तक)। UTF-8 ASCII के साथ पश्च-संगत है: कोई भी वैध ASCII बाइट अनुक्रम वैध UTF-8 भी है। अंतर ASCII श्रेणी से ऊपर मायने रखता है, é, 中, 🎉 सभी को UTF-8 में कई बाइट चाहिए। 2026 तक, ~98.9% वेब पेज UTF-8 को अपनी एन्कोडिंग के रूप में घोषित करते हैं (W3Techs के अनुसार)।
क्या मेरे रूपांतरण कहीं भेजे जाते हैं?
नहीं। रूपांतरण पूरी तरह से आपके ब्राउज़र में JavaScript के माध्यम से चलता है। आप जो टेक्स्ट और बाइनरी paste करते हैं, वे कभी नेटवर्क पार नहीं करते, Convert पर क्लिक करते समय DevTools की Network टैब में सत्यापित करें, या लोड होने के बाद पेज को ऑफ़लाइन (एयरप्लेन मोड) कर दें और टूल अब भी काम करता है।