如何将一个基数10数字转换为像HTML中的有序列表这样的字母表
问题描述:
我希望将一个整数转换为像HTML中的有序列表一样的字母等效数据。如何将一个基数10数字转换为像HTML中的有序列表这样的字母表
<ol type="a">
我试图基座10数字转换为基部26以a-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号, 我有新的符号在每一个开展这是错误的,我可以过滤掉这些。
这是非常低效和丑陋的,但我没有更多的想法。常用的方法是什么?
答
这是基本算法。如果你需要更高效地使用一个StringBuffer:
public static String getAlpha(int num) {
String result = "";
while (num > 0) {
num--; // 1 => a, not 0 => a
int remainder = num % 26;
char digit = (char) (remainder + 97);
result = digit + result;
num = (num - remainder)/26;
}
return result;
}
另一种方式做,这将转化为基座26,然后添加97你得到的字符串中的每个字符。
答
商店A到Z的数组索引开始从1到26,说alphArr []
i = Input
If(i<26){
Print alphArr[i]
}else{
//Consider i=27
count = i/26 (here, count=1)
alphabet = i%26 (here alphabet =1)
print alphArr[count]+””+alphArr[alphabet] // Which will be “AA”
}
你已经证明,你不想要的结果 - 只有失败月26日,据我可以告诉 - 但不是代码是什么... – 2012-08-15 13:11:19
因为你的0应该映射'a' – perilbrain 2012-08-15 13:15:32
我刚刚测试使用列表样式:低α和26应该只是** z **,而不是** az ** 。 – 2012-08-15 13:28:01