Lo unico que he podido sacar hasta ahora ha sido:
Código PHP:
var letras="abcdefghijklmnopqrstuvwxyz";
letras=letras.split("");
function num2letra(num) {
var resultado=(num+10).toString(36);
//tratamos cada caracter
var cadena=resultado.split("");
//aqui iremos poniendo el resultado
var formateado="";
for(var a=0; a<resultado.length; a++) {
//si es un numero, debemos tratarlo; si no lo añadimos a pelo a la cadena formateado
if( cadena[a].search(/^[0-9]{1}$/)==0 ) { // se devuelve 0 si es un numero
//document.write("numero("+cadena[a]+")! ");
formateado+=num2letra( parseInt(cadena[a]) );
}
else {
//alert("letra! "+cadena[a]);
formateado+=cadena[a];
}
}
return [formateado];
}
for(a=0;a<100;a++) {
document.write(''+a+' --> '+num2letra(a)+'<br/>');
}
Y su salida es:
Código:
0 --> a
1 --> b
2 --> c
3 --> d
4 --> e
5 --> f
6 --> g
7 --> h
8 --> i
9 --> j
10 --> k
11 --> l
12 --> m
13 --> n
14 --> o
15 --> p
16 --> q
17 --> r
18 --> s
19 --> t
20 --> u
21 --> v
22 --> w
23 --> x
24 --> y
25 --> z
26 --> ba
27 --> bb
28 --> bc
29 --> bd
30 --> be
31 --> bf
32 --> bg
33 --> bh
34 --> bi
35 --> bj
36 --> ba
37 --> bb
38 --> bc
39 --> bd
40 --> be
41 --> bf
42 --> bg
43 --> bh
44 --> bi
45 --> bj
46 --> bk
47 --> bl
48 --> bm
49 --> bn
50 --> bo
51 --> bp
52 --> bq
53 --> br
54 --> bs
55 --> bt
56 --> bu
57 --> bv
58 --> bw
59 --> bx
60 --> by
61 --> bz
62 --> ca
63 --> cb
64 --> cc
65 --> cd
66 --> ce
67 --> cf
68 --> cg
69 --> ch
70 --> ci
71 --> cj
72 --> ca
73 --> cb
74 --> cc
75 --> cd
76 --> ce
77 --> cf
78 --> cg
79 --> ch
80 --> ci
81 --> cj
82 --> ck
83 --> cl
84 --> cm
85 --> cn
86 --> co
87 --> cp
88 --> cq
89 --> cr
90 --> cs
91 --> ct
92 --> cu
93 --> cv
94 --> cw
95 --> cx
96 --> cy
97 --> cz
98 --> da
99 --> db
Como ves cuando empieza la segunda pasada en
26 --> ba
empieza desde 'b' y no por 'a', por aquello del +10.
A ver si se nos ocurre algo.