बाइनरी फ़ाइल

एक बाइनरी फ़ाइल एक कम्प्यूटर फाइल है जो पाठ फ़ाइल नहीं है। बाइनरी फ़ाइल शब्द का प्रयोग अक्सर गैर-पाठ फ़ाइल अर्थ वाले शब्द के रूप में किया जाता है। कई बाइनरी फ़ाइल स्वरूपों में ऐसे हिस्से होते हैं जिन्हें टेक्स्ट के रूप में समझा जा सकता है; उदाहरण के लिए, कुछ दस्तावेज़ फ़ाइल स्वरूप में स्वरूपित पाठ होता है, जैसे Doc (कंप्यूटिंग)#Microsoft Word बाइनरी फ़ाइल स्वरूप फ़ाइलें, दस्तावेज़ का पाठ शामिल करती हैं, लेकिन बाइनरी रूप में फ़ॉर्मेटिंग जानकारी भी शामिल करती हैं।

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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