बाइनरी फ़ाइल

एक बाइनरी फ़ाइल एक कम्प्यूटर फाइल है जो पाठ फ़ाइल नहीं है। "बाइनरी फ़ाइल" शब्द का प्रयोग प्रायः "गैर-पाठ फ़ाइल" शब्द के रूप में किया जाता है। कई बाइनरी फ़ाइल प्रारूपों में ऐसे भाग होते हैं जिन्हें पाठ के रूप में व्याख्या किया जा सकता है; उदाहरण के लिए, स्वरूपित पाठ वाली कुछ कंप्यूटर दस्तावेज़ फ़ाइलें, जैसे कि पुरानी माइक्रोसॉफ्ट वर्ड दस्तावेज़ फ़ाइलें, दस्तावेज़ का पाठ शामिल करती हैं, लेकिन इसमें बाइनरी रूप में स्वरूपण जानकारी भी होती है।

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

कुछ बाइनरी फ़ाइलों में शीर्षलेख होते हैं, फ़ाइल में डेटा की व्याख्या करने के लिए अभिकलित्र क्रमादेश द्वारा उपयोग किए जाने वाले मेटाडेटा के खंड होते हैं। शीर्षलेख में प्रायः एक हस्ताक्षर या माया संख्या होती है जो प्रारूप की पहचान कर सकता है। उदाहरण के लिए, एक जीआईएफ फ़ाइल में कई छवियां हो सकती हैं, और शीर्ष लेख का उपयोग छवि डेटा के प्रत्येक खंड को पहचानने और वर्णन करने के लिए किया जाता है। शीर्षलेख के प्रमुख बाइट्स में GIF87a या GIF89a जैसे पाठ होंगे जो बाइनरी को GIF फ़ाइल के रूप में पहचान सकते हैं। यदि किसी बाइनरी फ़ाइल में कोई शीर्षलेख नहीं है, तो इसे फ्लैट बाइनरी फ़ाइल कहा जा सकता है।

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

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

माइक्रोसॉफ्ट विंडोज और C और C++ क्रमदेशन भाषाओं के लिए इसके मानक पुस्तकालय क्रमादेशक को एक प्राचल निर्दिष्ट करने की अनुमति देते हैं जो यह दर्शाता है कि फ़ाइल को खोलते समय सादा पाठ या बाइनरी होने की उम्मीद है; यह फ़ाइल से पढ़ने और लिखने के लिए मानक लाइब्रेरी आवाहन को प्रभावित करता है जिसमें प्रणाली C/C++ "पंक्ति का अंत" वर्ण (ASCII लाइनफीड वर्ण) और विंडोज फ़ाइलों में अपेक्षा के पंक्ति का अंत अनुक्रम (अनुक्रम में ASCII कैरिज रिटर्न और लाइनफीड वर्ण) के बीच परिवर्तित होता है। यूनिक्स जैसी प्रणालियों में, उन प्रणालियों पर C और C++ मानक पुस्तकालय भी प्रोग्रामर को यह निर्दिष्ट करने की अनुमति देते हैं कि क्या एक फ़ाइल पाठ या बाइनरी होने की उम्मीद है, लेकिन पुस्तकालय उस पैरामीटर को अंत-ऑफ़-लाइन अनुक्रम के रूप में अनदेखा कर सकते हैं और करते हैं। यूनिक्स जैसी प्रणालियों में केवल सी/सी ++ एंड-ऑफ-लाइन वर्ण है।

देखना
एक हेक्साडेसिमल (या दशमलव, बाइनरी या ASCII वर्ण) मानों के अनुक्रम के रूप में फ़ाइल डेटा को बाइनरी फ़ाइल के संबंधित बाइट्स के लिए देखने के लिए एक हेक्स संपादक या दर्शक का उपयोग किया जा सकता है।

यदि एक पाठ संपादक में एक बाइनरी फ़ाइल खोली जाती है, तो आठ बिट्स के प्रत्येक समूह को आम तौर पर एक वर्ण के रूप में अनुवादित किया जाएगा, और उपयोगकर्ता को पाठ्य वर्णों का एक (शायद अस्पष्ट) प्रदर्शन दिखाई देगा। यदि फ़ाइल किसी अन्य एप्लिकेशन में खोली जाती है, तो प्रत्येक बाइट के लिए उस एप्लिकेशन का अपना उपयोग होगा: हो सकता है कि एप्लिकेशन प्रत्येक बाइट को एक संख्या के रूप में मानेगा और 0 और 255 के बीच संख्याओं की एक धारा का उत्पादन करेगा - या शायद बाइट्स में संख्याओं की व्याख्या करेगा रंगों के रूप में और संबंधित चित्र प्रदर्शित करें। अन्य प्रकार के दर्शक (जिन्हें 'वर्ड एक्सट्रैक्टर्स' कहा जाता है) केवल मानव-पठनीय पाठ को प्रकट करने वाले स्थानों के साथ अमुद्रणीय वर्णों को प्रतिस्थापित करते हैं। गेम में पासवर्ड खोजने, गैर-पाठ फ़ाइलों में छिपे हुए पाठ को खोजने और दूषित दस्तावेज़ों को पुनर्प्राप्त करने के लिए इस प्रकार का दृश्य बाइनरी फ़ाइल के त्वरित निरीक्षण के लिए उपयोगी है। इसका उपयोग अवांछित प्रभावों के लिए संदिग्ध फ़ाइलों (सॉफ़्टवेयर) का निरीक्षण करने के लिए भी किया जा सकता है। उदाहरण के लिए, उपयोगकर्ता को कोई भी URL/ईमेल दिखाई देगा जिससे संदिग्ध सॉफ़्टवेयर अस्वीकृत डेटा (चोरी करने के लिए) अपलोड करने के लिए कनेक्ट करने का प्रयास कर सकता है। यदि फ़ाइल को स्वयं एक निष्पादन योग्य के रूप में माना जाता है और चलता है, तो ऑपरेटिंग सिस्टम फ़ाइल को उसकी मशीनी भाषा में निर्देशों की एक श्रृंखला के रूप में व्याख्या करने का प्रयास करेगा।

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

बाइनरी संगतता
बाइनरी संगत दो फ़ाइलों में फ़ाइल के डेटा भाग में शून्य और एक का समान क्रम होगा। हालाँकि, फ़ाइल हेडर अलग हो सकता है।

इस शब्द का उपयोग आमतौर पर यह बताने के लिए किया जाता है कि एक एप्लिकेशन द्वारा निर्मित डेटा फ़ाइलें बिल्कुल वैसी ही होती हैं, जैसी किसी अन्य एप्लिकेशन द्वारा निर्मित डेटा फ़ाइलें होती हैं। उदाहरण के लिए, कुछ सॉफ़्टवेयर कंपनियाँ Microsoft Windows और Macintosh के लिए एप्लिकेशन बनाती हैं जो बाइनरी संगत हैं, जिसका अर्थ है कि Windows वातावरण में निर्मित फ़ाइल Macintosh पर निर्मित फ़ाइल के साथ विनिमेय है। यह डेटा के आयात और निर्यात के कारण होने वाली कई रूपांतरण समस्याओं से बचा जाता है।

विभिन्न कंप्यूटरों के बीच एक संभावित बाइनरी संगतता समस्या कंप्यूटर की अंतहीनता है। कुछ कंप्यूटर बाइट्स को एक फाइल में एक अलग क्रम में स्टोर करते हैं।

यह भी देखें

 * बाइनरी बड़ी वस्तु
 * disassembler
 * निष्पादन योग्य
 * फ़ाइल स्वरूपों की सूची