2015-05-06 3 views
6

In Integer.java gibt es das folgende Stück Code:Alle möglichen Zeichen für eine Zahl als String darstellt, 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' 
}; 

Ich dachte, alle Ziffern/Zeichen, die Sie jemals in müssten sind der Bereich 0-9 und die Buchstaben A bis F. Buchstaben (A, B, C, D, E und F) würden nur verwendet, wenn die Zahlen in der Basis 16 (hexadezimal) dargestellt sind.

Warum sagt der Javadoc "Alle möglichen Zeichen"? Werden die Buchstaben von G bis Z tatsächlich verwendet? Ich glaube, dass sie, wenn die Basis verwendet werden, wir die Zahlen in repräsentieren, größer ist als 16.

+0

toString(), getChars() und Die toUnsignedString() - Methode der Integer-Klasse verwendet dieses Array zum Speichern des char-Werts, der dem ganzzahligen Indexwert entspricht. und wie unten erwähnt, erklären Antworten das – Prashant

Antwort

11

Die toString Verfahren beliebige Basen unterstützt (wie 20), bis die als MAX_RADIX36

6

"Base36: Uses in practice" definiert ist, erklärt einige häufige Anwendungsfälle.

  • Das Remote Imaging Protocol für die Bulletin-Board-Systeme zur Übertragung von Koordinaten in einer kompakten Formbasis 36 Notation verwendet.
  • Viele URL-Umleitungssysteme wie TinyURL oder SnipURL/Snipr verwenden auch Basis-36-Ganzzahlen als kompakte alphanumerische Kennungen.
  • Geohash-36, ein Koordinatencodierungsalgorithmus, verwendet Radix 36, verwendet aber eine Mischung aus Klein- und Großbuchstaben, um Vokale, vokalähnliche Zahlen und andere Zeichenverwechslungen zu vermeiden.
  • Verschiedene Systeme wie RickDate verwenden die Basis 36 als kompakte Darstellung von Gregorianischen Datumsangaben in Dateinamen, wobei jeweils eine Ziffer für den Tag und den Monat verwendet wird.
  • [und viele mehr]

Protokoll Designer benötigen manchmal ein kompaktes, ASCII alphanumerischen Zeichen, Groß- und Kleinschreibung Schema für ganze Zahlen kodiert. Base36 passt zur Rechnung.

2

Es unterstützt die Radix-Basis bis zu 36 während der Umwandlung von Ganzzahl in String-Darstellung.

Beide MAX und MIN radix sind in Zeichenklasse angegeben als

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

versuchen, etwas wie folgt aus:

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

Ausgang:

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