Я хочу преобразовать целое число в алфавитный эквивалент, например упорядоченный список в 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, У меня есть новый символ в каждом переносе, который неверен, и я могу отфильтровать их.
Это очень неэффективно и некрасиво, но у меня больше нет идей. Каков общий способ?