使用 Java 的 Integer.toString() 以 26 为基数的字母
Base 26 as alphabetic using Java's Integer.toString()
所以我刚刚学习 Integer.toString(int x, int radix);
并认为它非常棒,因为它使基本转换变得非常容易。
但是,我尝试用 Base-26 来写语音 (a - z),并注意到 Integer.toString()
遵循十六进制的示例,因为它以数字开头,然后使用字母表 (0 - p)。
我已经知道如何手动转换为 Base-26,我不需要那个代码。但我想知道是否有办法利用 Integer.toString()
,因为它几乎已经完成了所有繁重的工作。
有什么想法吗?
否; the way that this method is implemented 有效保证它从 0-9 开始,然后通过 a-f 进行,如果基数超过 16,则继续。
如果您想以自己的方式执行此操作,则需要自己执行偏移。
您可以迭代 char[]
将输出从 Integer.toString
移动到您想要的范围。
public static String toAlphabeticRadix(int num) {
char[] str = Integer.toString(num, 26).toCharArray();
for (int i = 0; i < str.length; i++) {
str[i] += str[i] > '9' ? 10 : 49;
}
return new String(str);
}
所以我刚刚学习 Integer.toString(int x, int radix);
并认为它非常棒,因为它使基本转换变得非常容易。
但是,我尝试用 Base-26 来写语音 (a - z),并注意到 Integer.toString()
遵循十六进制的示例,因为它以数字开头,然后使用字母表 (0 - p)。
我已经知道如何手动转换为 Base-26,我不需要那个代码。但我想知道是否有办法利用 Integer.toString()
,因为它几乎已经完成了所有繁重的工作。
有什么想法吗?
否; the way that this method is implemented 有效保证它从 0-9 开始,然后通过 a-f 进行,如果基数超过 16,则继续。
如果您想以自己的方式执行此操作,则需要自己执行偏移。
您可以迭代 char[]
将输出从 Integer.toString
移动到您想要的范围。
public static String toAlphabeticRadix(int num) {
char[] str = Integer.toString(num, 26).toCharArray();
for (int i = 0; i < str.length; i++) {
str[i] += str[i] > '9' ? 10 : 49;
}
return new String(str);
}