Как преобразовать число с основанием 10 в алфавитный, как упорядоченный список в HTML

Я хочу преобразовать целое число в алфавитный эквивалент, например упорядоченный список в HTML.

<ol type="a">

Я попытался преобразовать число с основанием 10 в число с основанием 26 с цифрами -z.
Но это не то, чего я хотел.

IN     WANT        GET      
-----------------------
1   =>  a       <=  a
2   =>  b       <=  b
3   =>  c       <=  c
4   =>  d       <=  d
5   =>  e       <=  e
6   =>  f       <=  f
7   =>  g       <=  g
8   =>  h       <=  h
9   =>  i       <=  i
10  =>  j       <=  j
11  =>  k       <=  k
12  =>  l       <=  l
13  =>  m       <=  m
14  =>  n       <=  n
15  =>  o       <=  o
16  =>  p       <=  p
17  =>  q       <=  q
18  =>  r       <=  r
19  =>  s       <=  s
20  =>  t       <=  t
21  =>  u       <=  u
22  =>  v       <=  v
23  =>  w       <=  w
24  =>  x       <=  x
25  =>  y       <=  y
26  =>  z       <=  az
27  =>  aa      <=  aa
28  =>  ab      <=  ab
29  =>  ac      <=  ac

private final static char[] digits = {
'0', 'a', 'b', 'c', 'd', 'e', 'f', 
'g', 'h', 'i', 'j', 'k', 'l', 
'm', 'n', 'o', 'p', 'q', 'r', 
's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
};

private static String numberToAlphaNumeric(long i, int radix) {

    char[] buf = new char[65];
    int charPos = 64;
    boolean negative = (i < 0);
    if (!negative) {
        i = -i;
    }
    while (i <= -radix) {
        buf[charPos--] = digits[(int)(-(i % radix))];
        i = i / radix;
    }
    buf[charPos] = digits[(int)(-i)];
    if (negative) { 
        buf[--charPos] = '-';
    }
    return new String(buf, charPos, (65 - charPos));
}

public static String numberToAlphaNumeric(long number) {
    ArrayList<String> list = new ArrayList<String>();
    for( int j = 0; list.size() != number; j++ ) {
        String alpha = numberToAlphaNumeric( j, digits.length );
        if(!alpha.contains( "0" )) {
            list.add( alpha );
        }
    }
    return list.get( list.size()-1 );
}

Моя вторая идея:

Если я добавлю новый начальный символ к цифрам и преобразую свое число в число с основанием 27, У меня есть новый символ в каждом переносе, который неверен, и я могу отфильтровать их.

Это очень неэффективно и некрасиво, но у меня больше нет идей. Каков общий способ?

9
задан oliholz 15 August 2012 в 13:23
поделиться