簡體   English   中英

用於將數字表示為String,Integer.java的所有可能的字符

[英]All possible chars for representing a number as a String, Integer.java

在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'
};

我認為你需要的所有數字/字符都在0-9范圍內,字母A到F.字母(A,B,C,D,E和F)僅在數字以16為基數表示時使用(十六進制)。

為什么Javadoc說“所有可能的字符”? 是否實際使用了從G到Z的字母? 如果基數(我們代表數字)大於16,我認為可以使用它們。

toString方法支持任意基數(如20)到MAX_RADIX ,定義為36

“Base36:在實踐中使用”解釋了一些常見的用例。

  • 公告板系統的遠程成像協議使用基本36表示法以緊湊的形式傳輸坐標。
  • 許多URL重定向系統(如TinyURL或SnipURL / Snipr)也使用基本36整數作為緊湊的字母數字標識符。
  • Geohash-36是一種坐標編碼算法,它使用基數36但使用小寫和大寫字母字符的混合,以避免元音,元音外觀數字和其他字符混淆。
  • 諸如RickDate之類的各種系統使用基數36作為文件名中格里高利日期的緊湊表示,每天使用一個數字表示日期和月份。
  • [還有很多]

協議設計者有時需要一種緊湊的ASCII字母數字,不區分大小寫的方案來編碼整數。 Base36符合要求。

它支持最大為36的基數,同時將整數轉換為字符串表示。

MAX和MIN基數都在Character類中指定為

public static final int MIN_RADIX = 2;
public static final int MAX_RADIX = 36;

嘗試這樣的事情:

for (int i = 2; i < 36; i++) {
            System.out.println("Radix = "+i+" -- " + Integer.toString(123, i));
        }

輸出:

Radix = 2 -- 1111011
Radix = 3 -- 11120
Radix = 4 -- 1323
Radix = 5 -- 443
Radix = 6 -- 323
Radix = 7 -- 234
Radix = 8 -- 173
Radix = 9 -- 146
Radix = 10 -- 123
Radix = 11 -- 102
Radix = 12 -- a3
Radix = 13 -- 96
Radix = 14 -- 8b
Radix = 15 -- 83
Radix = 16 -- 7b
Radix = 17 -- 74
Radix = 18 -- 6f
Radix = 19 -- 69
Radix = 20 -- 63
Radix = 21 -- 5i
Radix = 22 -- 5d
Radix = 23 -- 58
Radix = 24 -- 53
Radix = 25 -- 4n
Radix = 26 -- 4j
Radix = 27 -- 4f
Radix = 28 -- 4b
Radix = 29 -- 47
Radix = 30 -- 43
Radix = 31 -- 3u
Radix = 32 -- 3r
Radix = 33 -- 3o
Radix = 34 -- 3l
Radix = 35 -- 3i
Radix = 36 -- 3f

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM