string HexFromID(int ID)
{
return ID.ToString("X");
}
int IDFromHex(string HexID)
{
return int.Parse(HexID, System.Globalization.NumberStyles.HexNumber);
}
Je m'interroge toutefois sur l'intérêt de cette mesure. Votre objectif déclaré est de rendre la valeur plus courte, ce qui est le cas, mais ce n'est pas un objectif en soi. Il s'agit en fait de la rendre plus facile à mémoriser ou plus facile à taper.
Si vous voulez dire plus facile à mémoriser, vous faites un pas en arrière. Nous savons qu'il s'agit toujours de la même taille, mais elle est codée différemment. Mais vos utilisateurs ne sauront pas que les lettres sont limitées à "A-F", et l'identifiant occupera donc pour eux le même espace conceptuel que si les lettres "A-Z" étaient autorisées. Ainsi, au lieu d'être comme la mémorisation d'un numéro de téléphone, c'est plutôt comme la mémorisation d'un GUID (de longueur équivalente).
Si vous voulez parler de la frappe, au lieu de pouvoir utiliser le clavier, l'utilisateur doit maintenant utiliser la partie principale du clavier. Il sera probablement plus difficile de taper, car il ne s'agira pas d'un mot que ses doigts reconnaissent.
Une bien meilleure option est de les laisser choisir un vrai nom d'utilisateur.
74 votes
Pour votre information, vous allez offenser les utilisateurs de pavés numériques.
1 votes
Vous avez raison. Mais nous essayons de convertir l'ID entier en quelque chose qui prend moins de caractères. Merci pour l'idée.
0 votes
Une réponse tardive à la mode, mais avez-vous envisagé une sorte de
Integer
raccourcir la mise en œuvre ? Si le seul objectif est de rendre l'identifiant de l'utilisateur aussi court que possible, je serais intéressé de savoir s'il existe une autre raison apparente pour laquelle vous exigez spécifiquement une conversion hexadécimale - à moins que cela ne m'ait échappé, bien sûr. Est-il clair et connu (si cela est exigé) que les identifiants des utilisateurs sont en fait une représentation hexadécimale de la valeur réelle ?1 votes
@codette Stocker les nombres sous forme de nombres prend le moins de place possible tout en restant lisible. Par exemple, 4 octets pour les nombres jusqu'à 2bln (entier). Ou si c'est trop long pour un type numérique, utilisez un champ binaire.
9 votes
@Luc L'OP indique Ma base de données contient des identifiants d'utilisateurs stockés sous forme d'entiers. Plutôt que de demander aux utilisateurs de faire référence à leur ID, je souhaite leur permettre d'utiliser la valeur hexadécimale. codette stocke donc les valeurs sous forme d'int, mais les convertit en hexadécimal pour l'utilisateur.