GUID est un grand nombre aléatoire Afficher dans un hex . Je souhaite montrer ce numéro dans un format plus court, disons que sur la base de toutes les lettres et numéros. C'est une base de 36 ans. p>
permet de dire que: Y a-t-il un algorithme "prêt" pour cela dans .NET? P>
Il doit être bidirectionnel. P>
edit: strong> en utilisant base64 est une solution encore meilleure. Le seul problème est de base64 contient 2f1e4fc0-81fd-11da-9156-00036a0f876a code> deviendra comme
3jel9x6ezi code>. p>.
/ code> de caractère qui n'est pas compatible à utiliser dans URI a>. p>
5 Réponses :
Ce n'est pas possible comme vous l'avez présenté. Vous devriez perdre des informations:
>>> 16 ** len('2f1e4fc081fd11da915600036a0f876a') 340282366920938463463374607431768211456 >>> 36 ** len('3jEl9x6eZi') 3656158440062976
La valeur 3JEL9X6EZI code> est uniquement par exemple, et il n'est pas une valeur "réelle".
Je pense que le plus proche que vous trouverez est base36 mais cela ne fonctionnera pas avec un type de giud (seulement un INT16, INT32 ou INT64). P>
Il n'y a rien de construit pour une telle conversion. Quelque chose de fermeture qui est intégré consiste à utiliser la base 64 coding:
Bonne solution. Mais pourquoi chaque chaîne se termine avec '=='? = code> Ce n'est pas une valeur valide au format BASE64.
@Mendy: Le caractère = est utilisé pour remplir le dernier groupe de caractères. (Il est spécifié dans la norme RFC 1421.)
Peut-être que c'est ce dont vous avez besoin: ShortGuid - une classe GUID amicale plus courte et une URL en C # P>
Pour la base 64, vous pouvez substituer des caractères non valides avec ceux valides (mais pas déjà utilisés). IIRC, il y a un peu moins de 96 caractères ASCII imprimables.
Regardez ma réponse pour voir comment j'ai réparé le ==, / et + problème