Java生成26英文字母编号
public class CaseAlphabetNumber {
public static void main(String[] args) throws InterruptedException {
Long[] data = {
0L, 1L, 26L, 52L, 676L, 702L, 1378L,
18278L, 35854L, 475254L, 932230L, 8353082582L, 16384892758L
};
String[] alphaCodes = {
"A", "B", "AA", "BA", "ZA", "AAA", "BAA", "AAAA", "BAAA", "AAAAA", "BAAAA", "AAAAAAAA", "BAAAAAAA"
};
for(int i = 0; i < data.length; i++){
System.out.printf("%-8s\t", getUpAlphaCode1(data[i], true));
System.out.printf("%.0f\n", getNumberByUpAlphaCode(alphaCodes[i]));
}
}
public static double getNumberByUpAlphaCode(String alphaCode){
double sum = 0.0;
int i = 0;
for(i = 0; i < alphaCode.length() - 1; i++){
sum += (alphaCode.charAt(i) - 'A' + 1) * Math.pow(26, alphaCode.length() - 1 -i);
}
sum += alphaCode.charAt(i) - 'A';
return sum;
}
public static String getUpAlphaCode1(Long number, boolean isStart){
String strCode = "";
if(isStart && number < 26){
return "" + (char)('A' + (number%26));
}
if(isStart){
char tch = (char)('A' + (number % 26));
strCode = getUpAlphaCode1(number/26, false) + tch;
return strCode;
}
if(number == 1) return "A";
char endLog = 0;
if(number%26 == 0){
endLog = 'Z';
number -= 1;
}else{
endLog = (char) ('A' + number%26 - 1);
}
number /= 26;
if(number - 1 == 0){
return getUpAlphaCode1(number, false)+endLog;
}
if(number - 1 < 0) return "" + endLog;
return getUpAlphaCode1(number, false) + endLog;
}
}