Question

À l'aide du codage ASCII, combien de caractères y a-t-il dans un GUID?

Je suis intéressé par le style Microsoft, qui inclut les accolades et les tirets.

Était-ce utile?

La solution

De MSDN :

  

Un GUID est une valeur de 128 bits composée   d'un groupe de 8 chiffres hexadécimaux,   suivi de trois groupes de 4   chiffres hexadécimaux chacun, suivis de   un groupe de 12 chiffres hexadécimaux.   L’exemple suivant de GUID montre la   regroupements de chiffres hexadécimaux dans un   GUID:   6B29FC40-CA47-1067-B31D-00DD010662DA

De Wikipedia :

  

Des accolades sont souvent ajoutées pour entourer le   format ci-dessus, en tant que tel:

{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

Soit un total de 38 caractères dans le codage hexadécimal typique avec des accolades.

-Adam

Autres conseils

TL; DR: aucun.

Comme Adam Davis l'a indiqué, le style Microsoft est l'encodage HEX (avec des accolades et des tirets pour le rendre plus lisible) pouvant être affiché à l'aide d'un sous-ensemble de caractères ASCII (0-9 et AF), mais il ne s'agit pas d'encodage ASCII spécifique. .

Je suppose qu'il est important de se rappeler que le style d'affichage Microsoft des GUID n'est qu'une représentation d'un GUID, qui correspond en réalité à une valeur intégrale de 16 octets (comme l'a déclaré Micheal Trausch).

Vous pouvez également le présenter sous différentes formes plus compactes en convertissant les octets en un jeu de caractères différent (comme en ASCII).

Théoriquement, vous pouvez afficher chaque octet sous forme de caractère ASCII étendu (255 caractères), ce qui vous permettrait d’enregistrer un GUID en tant que chaîne de 16 caractères.

Cependant, il ne serait pas très lisible, car il inclurait des caractères d'espacement (CR, espace, tabulation, etc.) et d'autres caractères spéciaux. Cela n'aurait donc de sens que de sauvegarder efficacement un GUID dans un non-humain. format de caractère lisible, par exemple dans une base de données qui ne prend pas en charge nativement les GUID ni la correspondance rapide de petites valeurs binaires: http://fr.wikipedia.org/wiki/Extended_ASCII

À mon humble avis, le moyen le plus lisible d’afficher un GUID plus compact serait d’utiliser le codage Base64, ce qui vous permet de le sauvegarder dans une chaîne de 22 caractères et de lui donner l’image suivante:

7v26IM9P2kmVepd7ZxuXyQ==

Mais comme le dit Jeff Atwood sur son site, vous pouvez également insérer un GUID dans une chaîne encodée en ASCII85 de 20 caractères:

[Rb*hlkkXVW+q4s(YSF0

Pour plus d'inspiration, voir: http://www.codinghorror.com/blog/ 2005/10 / équiper-notre-ascii-armor.html

Comme Adam l'a mentionné dans la citation MSDN, les UUID sont des valeurs de 128 bits. Cela signifie qu'ils utilisent 16 octets de RAM pour contenir une valeur. Une représentation textuelle prendra 32 octets (deux octets pour chaque octet), plus les 4 traits d'union, plus les deux crochets si vous souhaitez les inclure; cela représente 38 octets.

N'oubliez pas que si vous exposez des UUID à des utilisateurs de votre logiciel, ils peuvent fournir l'UUID avec ou sans crochets. Si vous stockez la valeur n'importe où, il est préférable de la stocker sous la forme d'une représentation binaire de 16 octets. Si vous interagissez avec d'autres implémentations d'UUID, vous pouvez utiliser le format de texte de base pour l'interopérabilité, car différentes implémentations effectuent des opérations différentes selon l'ordre des octets lors du stockage d'une valeur binaire UUID.

La longueur dépend du codage. Vous pouvez obtenir les codages et la longueur standard avec cet extrait:

public void Main() 
{
    var guid = Guid.Empty;
    Write(guid, "N"); // 32 characters
    Write(guid, "D"); // 36 characters (default)
    Write(guid, "B"); // 38 characters
    Write(guid, "P"); // 38 characters
    Write(guid, "X"); // 68 characters
}    

private void Write(Guid guid, string format) 
{
    var guidString = guid.ToString(format);
    Console.WriteLine("{0}: {1} ({2} characters)", format, guidString, guidString.Length);
}

voir la Méthode Guid.ToString pour plus de détails:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top