Est-ce que Java.util.UUID.randomUUID (). ToString () est toujours égal à 36?
Je n'ai pas pu trouver d'informations à ce sujet. Ici on dit seulement ce qui suit:
public statique UUID randomUUID () Fabrique statique permettant de récupérer un UUID de type 4 (généré de manière pseudo-aléatoire). L'UUID est généré à l'aide d'un générateur de nombres pseudo aléatoires de force cryptographique. Returns: Un UUID généré aléatoirement
Et cela type 4
ne me dit rien. Je ne sais pas ce que le type 4 signifie dans le cas.
Est-ce que Java.util.UUID.randomUUID (). ToString () est toujours égal à 36?
Un UUID
en fait une valeur de 128 bits (2 longs). Pour représenter 128 bits en chaîne hexadécimale, il y aura 128/4=32
char (chaque caractère est long de 4 bits). Au format chaîne, il contient également 4 (-
) c'est pourquoi la longueur est de 36.
54947df8-0e9e-4471-a2f9-9af509fb5889
32 caractères hexadécimaux + 4 traits d'union = 36 caractères Donc, la longueur sera toujours la même.
Je ne sais pas ce que le type 4 signifie dans le cas.?
FYI: Il y a plusieurs façons de générer un UUID. Ici, le type 4 signifie que cet uuid est généré en utilisant un nombre aléatoire ou pseudo-aléatoire. De wiki - niversally_unique_identifier # Versions :
Les versions
Pour les deux variantes 1 et 2, cinq "versions" sont définies dans les normes et chaque version peut être plus appropriée que les autres dans des cas d'utilisation spécifiques. La version est indiquée par le M dans la représentation sous forme de chaîne.
Version 1 Les UUID sont générés à partir d'une heure et d'un identifiant de nœud (généralement l'adresse MAC);
version 2 Les UUID sont générés à partir d'un identifiant (généralement un identifiant de groupe ou d'utilisateur), d'une heure et d'un identifiant de noeud;
les versions 3 et 5 produisent des UUID déterministes générés en hachant un identifiant et un nom d'espace de nom;
et version 4 Les UUID sont générés à l'aide d'un nombre aléatoire ou pseudo-aléatoire.
Vous pouvez convertir le binaire UUIDv4 16 octets en ascii de 24 octets en utilisant base64, au lieu d’encoder en ascii-hex (32 octets).
Pour ceux qui, comme moi, commencent à googler avant de lire le javadoc, voici le javadoc;)
Pour ceux qui ne savent pas comment lire un arbre de grammaire, lire de bas en haut.
un hexDigit est un caractère
un hexOctet est 2 hexDigits = 2chars
a noeud est 6 * hexOctet = 6 * 2hexdigit = 6 * 2 caractères = 12 caractères
a variant _ and_sequence est 2 * hexOctet = 2 * 2hexdigit = 2 * 2 caractères = 4 caractères
a time_high_and_version est égal à 2 * hexOctet = 2 * 2hexdigit = 2 * 2 caractères = 4 caractères
a time_mid est égal à 2 * hexOctet = 2 * 2hexdigit = 2 * 2 caractères = 4 caractères
a time_low est 4 * hexOctet = 4 * 2hexdigit = 4 * 2 caractères = 8 caractères
et enfin, un [~ # ~] uuid [~ # ~] est <time_low> "-" <time_mid> "- "<time_high_and_version>" - "<variante_et_sequence>" - "<noeud>
= 8 caractères + 1 caractère + 4 caractères + 1 caractère + 4 caractères + 1 caractère + 4 caractères + 1 caractère + 12 caractères
= 36 caractères! 128 bits de données + 4 trait d'union comme indiqué précédemment
The UUID string representation is as described by this BNF:
UUID = <time_low> "-" <time_mid> "-"
<time_high_and_version> "-"
<variant_and_sequence> "-"
<node>
time_low = 4*<hexOctet>
time_mid = 2*<hexOctet>
time_high_and_version = 2*<hexOctet>
variant_and_sequence = 2*<hexOctet>
node = 6*<hexOctet>
hexOctet = <hexDigit><hexDigit>
hexDigit =
"0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
| "a" | "b" | "c" | "d" | "e" | "f"
| "A" | "B" | "C" | "D" | "E" | "F"