द्विआधारी से षोडशआधारी: चार बिट, एक अंक, कोई हिसाब नहीं
यह रूपांतरण क्या करता है
यह द्विआधारी श्रृंखला को चार-चार बिट के खंडों में बाँटकर हर खंड को एक आधार 16 अंक के रूप में लिख देता है। इसमें सोलह प्रविष्टियों वाली एक तालिका से आगे कोई गणित नहीं लगता, इसीलिए यह अकेली ऐसी रूपांतरण है जिसे आँख से किया जा सकता है। बहुत लंबा हो चुका बिट पैटर्न भरोसे के साथ पढ़ने का यही मानक तरीका है।
चार-चार के समूह ठीक क्यों बैठते हैं
सोलह यानी 2 की चौथी घात, इसलिए 4 द्विआधारी स्थान ठीक एक आधार 16 अंक के बराबर होते हैं — न कोई शेष बचता है, न आधा-अधूरा समूह। यही वजह है कि बाइट-केंद्रित डेटा के लिए षोडशआधारी अष्टाधारी से बेहतर मानी जाती है: आठ बिट 4-4 के 2 समूहों में बँटते हैं, जबकि तीन आठ को बाँटता ही नहीं। छोटे शुरुआती समूह में शून्य भरने से संरेखण बना रहता है और मान नहीं बदलता।
द्विआधारी से षोडशआधारी तालिका
चार बिट के सोलह संभव समूह और उनके हेक्स अंक। इस तालिका को याद कर लेना ही पूरा हुनर है — उसके बाद द्विआधारी से हेक्स बदलना गणित नहीं, नकल बन जाता है।
| द्विआधारी | षोडशआधारी |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 10 | 2 |
| 11 | 3 |
| 1010 | A |
| 1111 | F |
| 10000 | 10 |
| 101010 | 2A |
| 11111111 | FF |
| 100000000 | 100 |
डीबग करते समय बार-बार लगने वाला रूपांतरण
जब कोई प्रोटोकॉल फ़ील्ड, रजिस्टर या बिटमास्क द्विआधारी में आए और दस्तावेज़ उसे हेक्स में लिखे, तो बीच का यही अनुवाद करना पड़ता है। चार-चार के समूह में करने से एक चलती हुई जाँच भी मिल जाती है: अगर बिट की कुल संख्या चार की गुणज न हो, तो कहीं एक बिट छूट गया है, और यह बात मान के भ्रमित करने से पहले ही पकड़ में आ जाती है।
शुरुआती समूह में शून्य भरें, अंदाज़ा न लगाएँ
छह बिट की श्रृंखला डेढ़ अंक होती है, जिसका कोई मतलब नहीं बनता। बाएँ वाले समूह में शून्य भरकर उसे पूरे चार का बनाएँ — 101011 से 0010 1011 — और फिर बदलें। संरेखण का अंदाज़ा लगाना ही वह ग़लती है जिससे मान सोलह गुना खिसक जाता है।
अक्सर पूछे जाने वाले सवाल
द्विआधारी को हेक्स में हाथ से कैसे बदलें?
दाईं ओर से बिट को चार-चार के समूहों में बाँटें, सबसे बाएँ समूह में ज़रूरत पड़े तो शून्य भरें, और हर समूह की जगह उसका हेक्स अंक रख दें। 10011100, 1001 1100 बनता है, और उसका मान 9C है।
समूह दाईं ओर से क्यों बनाते हैं, बाईं ओर से नहीं?
क्योंकि सबसे दाईं ओर सबसे छोटे स्थानीय मान होते हैं, और समूह बनाना स्थानीय मान के साथ चलना चाहिए तभी अर्थ बनता है। बाईं ओर से बाँटने पर, जब लंबाई चार की गुणज न हो, हर अंक खिसक जाता है — और वह संख्या को चुपचाप बदल देता है, सिर्फ़ संरेखण नहीं बिगाड़ता।
एक बाइट के लिए कितने हेक्स अंक चाहिए?
ठीक दो, क्योंकि एक बाइट आठ बिट की होती है और चार बिट से एक अंक बनता है। यही तय रिश्ता वजह है कि बाइट-केंद्रित डेटा की डिफ़ॉल्ट लिपि षोडशआधारी बनी, और इसीलिए मेमोरी डंप दो-दो अंकों की जोड़ियों की कतार जैसा पढ़ा जाता है।
क्या कनवर्टर लंबी बिट श्रृंखलाएँ संभालता है?
हाँ। 64 बिट का मान सोलह हेक्स अंक बनता है, और रूपांतरण अनुमानित नहीं बल्कि ठीक-ठीक है — टूल शुरू से आख़िर तक पूर्णांक गणित में चलता है, इसलिए दायरे के बड़े सिरे पर कुछ नहीं खोता जहाँ फ़्लोटिंग-पॉइंट गोलाई शुरू कर देता है।
क्या पहले से स्पेस वाली द्विआधारी चिपका सकता हूँ?
हाँ। बदलने से पहले स्पेस और अंडरस्कोर हटा दिए जाते हैं, इसलिए टर्मिनल, डेटाशीट या diff से कॉपी की गई द्विआधारी बिना सँवारे चल जाती है। स्रोत में दिखने वाले समूहों का मान पर कोई असर नहीं पड़ता।