Conversione di base (CJam)
Un modo semplice per codificare stringhe ASCII che non iniziano con un byte null è quello di convertire dalla base 128 all'intero, quindi alla base 256:
128b256b:c e# Prints encoded string.
128b256b:c`"256b128b:c" e# Prints encoded string with decoder.
Questo utilizza 7 bit per codificare ogni carattere ASCII.
Se la stringa originale è composta, ad esempio, da lettere minuscole e non inizia con una a , possiamo iniziare mappando "a...z"
a [0 ... 25]
, quindi procedere come sopra:
'afm26b256b:c e# Prints encoded string.
'afm26b256b:c`"256b26b'af+" e# Prints encoded string with decoder.
Infine, se la stringa originale ha solo pochi caratteri univoci (comuni nell'arte ASCII), di solito è meglio specificare l'alfabeto in modo esplicito.
Per esempio:
" +-/\|"f#6b256b:c e# Prints encoded string.
" +-/\|"f#6b256b:c`"256b6b"" +-/\|"`"f=" e# Prints encoded string with decoder.
Come regola empirica, si desidera che il primo carattere della stringa originale sia il secondo carattere dell'alfabeto, il successivo carattere distinto della stringa originale sia il primo carattere dell'alfabeto, il successivo carattere distinto della stringa originale a essere il terzo carattere dell'alfabeto, il successivo carattere distinto della stringa originale per essere il quarto carattere dell'alfabeto, ecc.
Il codificatore dell'ultimo esempio funziona come segue:
" +-/\|"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.
Il decodificatore dell'ultimo esempio funziona come segue:
256b6b e# Convert from base 256 to base 6.
" +-/\|"f= e# Replace each digit by the corresponding character of the alphabet.