बाइनरी फ़ाइल

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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