Art von Charakter generierte UUID
- Hat java.util.UUID generiert Sonderzeichen?
- Was sind die Art der Zeichen (eg - Großbuchstaben, Kleinbuchstaben, Ziffern) generiert durch UUID.
InformationsquelleAutor der Frage minil | 2011-11-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
UUID ≠ Text
Zur Klärung, UUID ist eigentlich einer 128-bit-Wertkeine text-oder Ziffern. Könnte man denken, dass Sie als 128-bit-unsigned-Integer-zahlen.
Hex-string
Menschen nicht gut Lesen und schreiben von 128 bits 128
1
und0
Zeichen. Wenn eine UUID muss geschrieben werden, die für den menschlichen Verzehr verwenden wir eine Hexadezimal (Ziffern0
-9
und Briefea
-f
) string. So verwenden wir 32 hex-Zeichen mit 4 Bindestrichen repräsentieren die 128 bits in insgesamt 36 Zeichen. Zum Beispiel:Keine "Speziellen" Zeichen
Als für "Sonderzeichen" in der Frage genannten, sehen Sie nur diese 23 mögliche Zeichen in einen hex-string Darstellung eines UUID:
Kleinbuchstaben Erforderlich Spezifikation
Den neuesten international spec datiert 2008-08 Staaten (Hervorhebung von mir):
Verstöße Gegen Die Gemeinsamen
Jedoch, Microsoft, Apple und andere, die allgemein gegen die Kleinschreibung die Regel. An einem Punkt, den Microsoft veröffentlicht software generiert gemischten Fall (mit groß - und Kleinbuchstaben), offenbar eine unbeabsichtigte Funktion.
So tun, wie die spec sagt:
Der Java-Dokumentation für die
UUID
Klasse'toString
Methode, Dokumente in BNFdass Großbuchstaben ist zulässig, wenn die Generierung einer Zeichenkette, die im Widerspruch zu den UUID-standard-Spezifikation. Jedoch ist das tatsächliche Verhalten der Klasse und derentoString
Methode in der Oracle-Implementierung für Java 8 ist richtig, Kleinbuchstaben für die Ausgabe aber zu tolerieren, entweder groß-oder Kleinbuchstaben eingegeben werden.Eingang entweder klein-/Großbuchstaben:
Ausgabe nur Kleinbuchstaben:
Sehen diese code ausführen, live in IdeOne.com.
Beispiel Werte
Sehen Sie einige Beispiele von UUID-Werten, mit einer der vielen web-sites, die Werte generieren. Zum Beispiel:
Oder mit einem command-line tool. Fast jedes Betriebssystem kommt gebündelt mit so einem tool. Auf Mac OS X, starten Sie Terminal.app und geben
uuidgen
.InformationsquelleAutor der Antwort Basil Bourque
In der javadoc für java.util.UUID links zu RFC 4122 was sagt
Also Nein, es wird nicht generieren von Sonderzeichen.
InformationsquelleAutor der Antwort sudocode
Einer UUID nicht aus den Zeichen, es sei denn, Sie bitten, es in einen string konvertiert werden. An diesem Punkt, es wird verwandelt werden in einen string bestehend aus hex-Zeichen und Bindestriche, wie beschrieben von den docs für
UUID.toString()
.(Es ist nicht dokumentiert, ob die hex-Ziffern werden groß-oder Kleinschreibung.)
InformationsquelleAutor der Antwort Jon Skeet