【问题标题】:Base 26 as alphabetic using Java's Integer.toString()使用 Java 的 Integer.toString() 以字母为基数 26
【发布时间】:2017-01-19 03:32:12
【问题描述】:

所以我刚刚学习了Integer.toString(int x, int radix);,并认为它非常棒,因为它使基本转换变得超级简单。

但是,我尝试使用 Base-26 拼音 (a - z) 编写,并注意到 Integer.toString() 遵循十六进制的示例,它以数字开头,然后使用字母表 (0 - p)。

我已经知道如何手动转换为 Base-26,我不需要该代码。但我想知道是否有办法利用Integer.toString(),因为它几乎已经完成了所有繁重的工作。

有什么想法吗?

【问题讨论】:

  • 如果您针对某些具体代码提出具体问题,您将获得更有用的结果。

标签: java tostring base-conversion


【解决方案1】:

您可以遍历 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);
}

Ideone Demo

【讨论】:

  • 有没有办法让 26 开始“aa”而不是“ba”?谢谢顺便说一句。
  • @forgetfulbur 只要你想让“a”表示“0”,“ba”就是正确的输出,因为它相当于“10”
  • @forgetfulbur 检查是否以 b 开头然后更改
【解决方案2】:

没有; the way that this method is implemented 有效保证它从 0-9 开始,然后通过 a-f,然后在基数超过 16 时继续。

如果您想以自己的方式执行此操作,则需要自己执行偏移。

【讨论】:

  • 我认为是这样。有什么聪明的方法可以对已转换的数据执行偏移?当然,除了蛮力方式。
  • 可以添加一个char,因此如果您想将'A''a' 定义为0,那么偏移量就可以直接使用了。
猜你喜欢
  • 2016-09-27
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多