उपयोग कैसे करें
- टेक्स्ट को ऑक्टल में बदलने के लिए “एनकोड करें” चुनें, या ऑक्टल मानों को वापस टेक्स्ट में बदलने के लिए “डिकोड करें”।
- इनपुट टाइप या पेस्ट करें, या किसी फ़ाइल के बाइट बदलने के लिए उसे खोलें।
- आउटपुट के लिए “विभाजक” चुनें: “स्पेस”, “कोई नहीं”, “कॉमा” या “नई लाइन”।
- परिणाम कॉपी करें या उसे फ़ाइल के रूप में डाउनलोड करें।
ऑक्टल क्या है?
ऑक्टल, या Base8, संख्याओं को 0 से 7 तक के अंकों से लिखता है। हर ऑक्टल अंक ठीक तीन बिट को दर्शाता है, इसी वजह से ऑक्टल उन शुरुआती कंप्यूटरों पर लोकप्रिय था जिनके वर्ड साइज़ तीन के गुणज थे, जैसे 12-बिट PDP-8 और 36-बिट PDP-10। आज यह मुख्य रूप से एस्केप सीक्वेंस और Unix फ़ाइल अनुमतियों में बचा है।
एक बाइट में 0 से 255 तक का मान होता है, जो ऑक्टल में 0 से 377 है। यह कन्वर्टर इनपुट के हर बाइट को शुरुआती शून्य के साथ ठीक तीन ऑक्टल अंकों में लिखता है, ताकि सभी समूहों की चौड़ाई एक जैसी रहे और उन्हें बिना विभाजक के भी जोड़ा जा सके। टेक्स्ट को पहले चुनी गई टेक्स्ट एनकोडिंग से बाइट में बदला जाता है: सामान्य ASCII के लिए प्रति अक्षर एक बाइट, और UTF-8 में दूसरी लिपियों के लिए प्रति अक्षर दो से चार बाइट।
ऑक्टल एस्केप सीक्वेंस
C, C++, Python, Perl और शेल का printf आपको किसी बाइट को बैकस्लैश और उसके बाद अधिकतम तीन ऑक्टल अंकों के रूप में लिखने देते हैं: \101 अक्षर A है और \012 लाइन फ़ीड है।
यह टूल बिना बैकस्लैश के केवल अंक आउटपुट करता है। एस्केप की गई स्ट्रिंग बनाने के लिए स्पेस से अलग किया गया आउटपुट लें, हर स्पेस को बैकस्लैश से बदलें और पहले समूह के आगे भी एक बैकस्लैश जोड़ें। एस्केप सीक्वेंस डिकोड करने के लिए उल्टा करें और बैकस्लैश को स्पेस से बदल दें, क्योंकि डिकोडर केवल अंक और विभाजक स्वीकार करता है।
755 जैसी फ़ाइल अनुमतियाँ भी ऑक्टल में होती हैं, लेकिन वे संख्याएँ हैं, टेक्स्ट नहीं। ऐसी किसी संख्या को बाइनरी या दशमलव में बदलने के लिए नंबर बेस कन्वर्टर का उपयोग करें।
कोड में ऑक्टल
# Python
' '.join(f'{b:03o}' for b in 'Hi'.encode()) # '110 151'
bytes(int(o, 8) for o in '110 151'.split()).decode() # 'Hi'
# Shell
printf '\110\151\n' # Hi प्रिंट करता है
printf 'Hi' | od -An -to1 # 110 151
तकनीकी विवरण
| वर्णमाला | 0-7 |
|---|---|
| आउटपुट का आकार | प्रति बाइट 3 अंक (300%) |
| पैडिंग | कोई नहीं |
| मानक | ऑक्टल स्थानीय मान प्रणाली |
| केस-संवेदी | नहीं |
उदाहरण
| इनपुट (UTF-8) | आउटपुट |
|---|---|
Hello, World! | 110 145 154 154 157 054 040 127 157 162 154 144 041 |
Base64.is | 102 141 163 145 066 064 056 151 163 |
你好 | 344 275 240 345 245 275 |
अक्सर पूछे जाने वाले प्रश्न
हर बाइट में तीन ऑक्टल अंक क्यों होते हैं?
सबसे बड़ा बाइट मान, 255, ऑक्टल में 377 है, इसलिए तीन अंक हमेशा काफ़ी होते हैं। छोटे मानों के आगे शून्य जोड़ने से हर समूह की चौड़ाई एक जैसी रहती है, और इसी से बिना विभाजक वाली स्ट्रिंग को वापस बाइट में बाँटा जा सकता है।
बिना स्पेस वाले ऑक्टल को डिकोड कैसे करें?
अंकों को एक लगातार स्ट्रिंग के रूप में पेस्ट करें। डिकोडर इसे तीन-तीन के समूहों में बाँटता है, इसलिए लंबाई 3 का गुणज होनी चाहिए। अगर कुछ मानों में तीन से कम अंक हैं, तो उन्हें स्पेस, कॉमा या लाइन ब्रेक से अलग करें।
400 जैसा मान अस्वीकार क्यों होता है?
ऑक्टल 400 का मान 256 है, जो एक बाइट में नहीं समाता। मान्य बाइट मान 0 से 377 तक होते हैं, और डिकोडर इस सीमा से बाहर के किसी भी समूह की स्थिति बताता है। अंक 8 और 9 तो ऑक्टल अंक ही नहीं हैं।
क्या किसी दूसरे कैरेक्टर सेट के लिए ऑक्टल मान मिल सकते हैं?
हाँ। उसे “टेक्स्ट एनकोडिंग” मेनू में चुनें, जैसे पश्चिमी यूरोपीय अक्षरों के लिए प्रति अक्षर एक बाइट वाला Windows-1252 या ISO-8859-1, या चीनी और जापानी टेक्स्ट के लिए GBK या Shift_JIS।