为什么有Java基数限制?

Ada*_*dam 4 java

我注意到Java中基数的最大限制是基数36.这是一个任意限制,还是Java有理由以这种方式限制基数?

Mar*_*ers 11

它是十进制数字(10)加上字母表中的字母数(26).

如果允许37的基数,则必须选择一个新的字符来代表第37位.虽然肯定可以挑选一些角色,但没有明显的选择.不允许更大的基数是有道理的.

  • 当然,一些语言,如Bash shell算法,当基数大于36时,通过区分大写字母和小写字母允许更高的基数(radices?).Java不会这样做. (3认同)
  • 确切地。那么为什么 Java 将最大基数基于不区分大小写的字母数字而不是区分大小写的字母数字呢?扔掉 26 个数字似乎很愚蠢。 (2认同)
  • 大写的 A 怎么样? (2认同)
  • 如果你让大写和小写不同,哪个值更高,`A` 还是 `a`?同样,选择一个很容易,但这将是一个任意的选择 - 没有*明显*的选择。此外,传统上十六进制在大小写变化中幸存下来——0x8a == 0x8A;有一些不适用的基础会令人困惑。尽管如此,您可以通过使用 0-9a-zA-Z 来实现基数 62——您只是无法使用 `Integer.toString()` 来实现 (2认同)