आधार रूपांतरण (CJam)
ASCII स्ट्रिंग्स को एनकोड बाइट से शुरू न करने का एक आसान तरीका बेस 128 से पूर्णांक में बदलना है, फिर बेस 256 से:
128b256b:c e# Prints encoded string.
128b256b:c`"256b128b:c" e# Prints encoded string with decoder.
यह प्रत्येक ASCII वर्ण को एनकोड करने के लिए 7 बिट्स का उपयोग करता है।
मूल स्ट्रिंग केवल की, जैसे, छोटे अक्षरों होते हैं, और एक साथ नहीं शुरू होता है, तो एक है, हम मानचित्रण द्वारा शुरू कर सकते हैं "a...z"
करने के लिए [0 ... 25]
है, तो इसके बाद के संस्करण के रूप में आगे बढ़ना:
'afm26b256b:c e# Prints encoded string.
'afm26b256b:c`"256b26b'af+" e# Prints encoded string with decoder.
अंत में, यदि मूल स्ट्रिंग में केवल कुछ विशिष्ट अक्षर (ASCII कला में आम) हैं, तो आमतौर पर वर्णमाला को स्पष्ट रूप से निर्दिष्ट करना बेहतर होता है।
उदाहरण के लिए:
" +-/\|"f#6b256b:c e# Prints encoded string.
" +-/\|"f#6b256b:c`"256b6b"" +-/\|"`"f=" e# Prints encoded string with decoder.
अंगूठे के नियम के रूप में, आप चाहते हैं कि मूल स्ट्रिंग का पहला वर्ण वर्णमाला का दूसरा वर्ण हो, मूल स्ट्रिंग का अगला विशिष्ट वर्ण वर्णमाला का पहला वर्ण हो, मूल स्ट्रिंग का अगला विशिष्ट वर्ण वर्णमाला का तीसरा वर्ण हो, मूल तार का अगला विशिष्ट वर्ण वर्णमाला का चौथा वर्ण हो, आदि।
अंतिम उदाहरण के एनकोडर निम्नानुसार काम करते हैं:
" +-/\|"f# e# Replace each character by its index in that string.
6b256b e# Convert from base 6 (length of the alphabet) to base 256.
:c e# Cast each digit to character.
अंतिम उदाहरण के डिकोडर निम्नानुसार काम करते हैं:
256b6b e# Convert from base 256 to base 6.
" +-/\|"f= e# Replace each digit by the corresponding character of the alphabet.