用于将数字表示为String,Integer.java的所有可能的字符

Evd*_*afa 6 java hex integer

在Integer.java中,有以下代码:

/**
 * All possible chars for representing a number as a String
 */
final static char[] digits = {
    '0' , '1' , '2' , '3' , '4' , '5' ,
    '6' , '7' , '8' , '9' , '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'
};
Run Code Online (Sandbox Code Playgroud)

我认为你需要的所有数字/字符都在0-9范围内,字母A到F.字母(A,B,C,D,E和F)只有在数字以16为基数表示时才会使用(十六进制).

为什么Javadoc说"所有可能的字符"?是否实际使用了从G到Z的字母?如果基数(我们代表数字)大于16,我认为可以使用它们.

Adr*_*ian 11

toString方法支持任意基数(如20),MAX_RADIX其定义为36


Mik*_*uel 6

"Base36:在实践中使用"解释了一些常见的用例.

  • 公告板系统的远程成像协议使用基本36表示法以紧凑的形式传输坐标.
  • 许多URL重定向系统(如TinyURL或SnipURL/Snipr)也使用基本36整数作为紧凑的字母数字标识符.
  • Geohash-36是一种坐标编码算法,它使用基数36但使用小写和大写字母字符的混合,以避免元音,元音外观数字和其他字符混淆.
  • 诸如RickDate之类的各种系统使用基数36作为文件名中格里高利日期的紧凑表示,每天使用一个数字表示日期和月份.
  • [还有很多]

协议设计者有时需要一种紧凑的ASCII字母数字,不区分大小写的方案来编码整数.Base36符合要求.