A000 -> A999 -> 0A00-> 9A99 ->00A0 ->99A9 -> 000A -> 999A -> B000 e così via.
A000 -> A999 : da 0 a 999
0A00 -> 9A99 : da 1.000 a 1.999
00A0 -> 99A9 : da 2.000 a 2.999
000A -> 999A : da 3.000 a 3.999
B000 -> B999 : da 4.000 a 4.999
Ho notato che si "mangia" una lettera ogni 4.000. Poi la posizione della lettera nella stringa indica il migliaio. Per esempio una B in terza posizione indica un range da 6.000 a 6.999. Quindi dato questo è possibile passare da un numero in base 10 ad un numero in base X e vice versa. Questi sono gli scopi di codeBaseX e decodeBaseX.
la funzione charPosition consente di testare se il parametro passato è in base 10 o in base X.