Базова конверсія (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.