बेस कनवर्ज़न कैसे काम करता है
हर स्थानीय अंक प्रणाली किसी मान को बेस की घातों से गुणित अंकों के योग के रूप में दर्शाती है। बेस बदलने का अर्थ है उसी मान को एक अलग घात-शृंखला के विरुद्ध फिर से लिखना।
- इनपुट वर्णमाला को सत्यापित करें. प्रत्येक बेस एक विशिष्ट अंक-समूह स्वीकार करता है। बाइनरी 0 और 1 स्वीकार करता है; ऑक्टल 0-7; डेसिमल 0-9; हेक्स 0-9 और A-F। चुनी गई वर्णमाला से बाहर का कोई वर्ण होने पर कनवर्ज़न से पहले ही इनलाइन त्रुटि दिखाई देती है।
- मान को पार्स करें. JavaScript Number (2^53-1 तक) में आने वाले मानों के लिए टूल
parseInt(text, base)का उपयोग करता है। उससे बड़े मानों के लिए यहBigIntपर जाता है ताकि बड़े से बड़े पूर्णांक का कनवर्ज़न सटीक रहे। - हर टार्गेट बेस में पुनः प्रस्तुत करें. पार्स किया गया मान
Number.prototype.toString(base)याBigInt.prototype.toString(base)के ज़रिए हर आउटपुट बेस में बदला जाता है। चारों मानक पैन (बाइनरी, ऑक्टल, डेसिमल, हेक्स) और कस्टम-बेस पैन एक साथ अपडेट होते हैं। - फॉर्मेटिंग लागू करें. प्रीफ़िक्स टॉगल बाइनरी, ऑक्टल और हेक्स आउटपुट में क्रमशः 0b, 0o, या 0x जोड़ता है। अंक-समूहन बाइनरी में हर चार अंकों के बाद और हेक्स में हर दो अंकों के बाद अंडरस्कोर डालता है। हेक्स केस टॉगल A-F के लिए अपरकेस या लोअरकेस चुनता है।
- लाइव क्रॉस-पैन सिंक. किसी भी पैन को संपादित करने पर 100 ms डिबाउंस्ड री-कनवर्ज़न ट्रिगर होता है जो अन्य पैन अपडेट करता है। जिस पैन में आप टाइप कर रहे हैं वह हर कीस्ट्रोक पर सत्य का स्रोत माना जाता है।
बेस कनवर्टर क्यों उपयोग करें
- मेमोरी डंप पढ़ना. डिबगर, डिसअसेंब्लर और कोर-डंप व्यूअर पते और रजिस्टर मान हेक्स में दिखाते हैं। उन्हें डेसिमल में बदलने से वे उसी ट्रेस में कहीं और रिपोर्ट की गई गणनाओं, साइज़ और ऑफसेट से तुलनीय हो जाते हैं।
- कलर कोड के साथ काम करना. CSS, डिज़ाइन टूल और इमेज फॉर्मेट रंगों को #d2511a जैसे हेक्स ट्रिपलेट में लिखते हैं। हर जोड़े को डेसिमल में बदलने पर वही रंग rgb(210, 81, 26) रूप में मिलता है जैसा आपका कलर पिकर या एक्सेसिबिलिटी चेकर चाहता है।
- फ़ाइल परमिशन डिकोड करना. Unix chmod मान ऑक्टल में लिखे जाते हैं: 755 का अर्थ है rwxr-xr-x — जब आप हर ऑक्टल अंक को उसके तीन बाइनरी बिट्स में बदलते हैं। कनवर्टर यह मैपिंग एक ही चरण में दिखाता है ताकि आप मैन-पेज खोले बिना परमिशन सेट जाँच सकें।
- बिट फ्लैग डिबग करना. नेटवर्क प्रोटोकॉल, कर्नेल सिस्टम-कॉल और हार्डवेयर रजिस्टर कई बूलियन फ्लैग एक पूर्णांक में पैक करते हैं। पूर्णांक को बाइनरी में पढ़ने से एक नज़र में पता चलता है कि कौन से बिट सेट हैं — यही चाहिए जब यह समझना हो कि कोई फ्लैग असर क्यों नहीं कर रहा।
सामान्य उपयोग
बेस कनवर्ज़न डेवलपर, सिक्योरिटी और हार्डवेयर कार्य में रोज़ तब आता है जब कोई संख्या केवल गिनती से ज़्यादा कुछ होती है।
- एम्बेडेड फर्मवेयर: JTAG प्रोब से निकले हेक्स डंप में किसी फ़ंक्शन का पता खोजें, फिर डेसिमल ऑफसेट का उपयोग करके वह ब्रेकपॉइंट कमांड लिखें जो आपका डिबगर स्क्रिप्ट स्वीकार करता है।
- नेटवर्क सिक्योरिटी: डॉटेड-डेसिमल में छपे 32-बिट नेटमास्क को वापस बाइनरी में बदलें, प्रीफ़िक्स लंबाई गिनें, फिर ACL नियम के लिए CIDR रूप लिखें।
- CTF पहेलियाँ और क्रिप्टो चुनौतियाँ: XOR के तहत किसी उम्मीदवार प्लेनटेक्स्ट से लीक हुए कुंजी अंश की तुलना करते हुए हेक्स, डेसिमल और बाइनरी के बीच स्विच करें।
एक हल किया उदाहरण
डेसिमल पैन में 255 टाइप करें। हेक्स पैन FF (या प्रीफ़िक्स टॉगल चालू होने पर 0xFF) दिखाएगा, बाइनरी पैन 11111111 (1111_1111 ग्रुप्ड), और ऑक्टल पैन 377। कस्टम-पैन रेडिक्स 36 करें और वही मान 73 के रूप में दिखेगा। डेसिमल पैन में 123456789012345678901234567890 जैसा बड़ा मान टाइप करें; हेक्स पैन BigInt पाथ का उपयोग करते हुए 18EE90FF6C373E0EE4E3F0AD2 दिखाता है।
FAQ
नंबर बेस क्या है?
नंबर बेस, या रेडिक्स, बताता है कि कोई स्थानीय प्रणाली अगली स्थिति में कैरी करने से पहले कितने अलग-अलग अंकों का उपयोग करती है। डेसिमल (बेस 10) 0-9 का उपयोग करता है; बाइनरी (बेस 2) केवल 0 और 1 का; हेक्साडेसिमल (बेस 16) 0-9 के साथ A-F का। बेस बदलने पर संख्या का मूल्य नहीं बदलता — केवल उसके अंक लिखने और समूहित करने का तरीका बदलता है।
प्रोग्रामिंग में हेक्साडेसिमल क्यों उपयोग करते हैं?
एक हेक्स अंक ठीक चार बाइनरी बिट्स के बराबर होता है, इसलिए दो हेक्स अंक एक बाइट और आठ हेक्स अंक 32-बिट वर्ड को कवर करते हैं। इससे हेक्स मेमोरी पते, रजिस्टर कंटेंट, कलर ट्रिपलेट और क्रिप्टोग्राफ़िक कुंजियों के लिए सबसे सघन मानव-पठनीय रूप बन जाता है। 0xFF पढ़ना 11111111 से तेज़ है, और बिट पैटर्न ज़रूरत पड़ने पर वहाँ मौजूद है।
क्या बेस 36 से आगे कनवर्ट किया जा सकता है?
यह टूल बेस 36 पर रुकता है क्योंकि यही JavaScript के नेटिव parseInt और toString API की ऊपरी सीमा है, जो अंक वर्णमाला के रूप में 0-9 के बाद A-Z स्वीकार करते हैं। बेस 37-62 कस्टम वर्णमाला से संभव हैं (Bitcoin पते में उपयोग Base58 एक उदाहरण है) लेकिन उन्हें एक अलग टूल के रूप में ट्रैक किया जाता है क्योंकि हर उच्च बेस को अपना प्रामाणिक अंक-क्रम चाहिए।
क्या यह नकारात्मक संख्याएँ और फ्लोट संभालता है?
नकारात्मक पूर्णांक हर बेस में एक लीडिंग माइनस चिह्न के साथ प्रस्तुत किए जाते हैं, जैसा Number.prototype.toString करता है। चुनी गई बिट-चौड़ाई (8, 16, 32, 64) में टूज़-कॉम्प्लीमेंट प्रतिनिधित्व एक अलग व्यू है जिसे हम जोड़ने की योजना रखते हैं। फ्लोटिंग-पॉइंट बेस कनवर्ज़न भी इस संस्करण के दायरे से बाहर है; टूल केवल पूर्णांक मान संभालता है।
बेस कनवर्ज़न एक छोटा काम है जो फर्मवेयर, सिक्योरिटी और ग्राफिक्स कार्य में बार-बार आता है। इसे ब्राउज़र टैब में करना — उन्हीं अंकगणितीय प्रिमिटिव पर जो Node और V8 पहले से शिप करते हैं — काम तेज़ रखता है और डेटा आपकी मशीन पर।