Vous avez besoin de beaucoup de place pour vos chiffres car vous utilisez la base 10 pour les représenter. Une amélioration serait d'utiliser la base 16 (hex). Ainsi, par exemple, vous pourriez représenter 255 (3 chiffres) par ff (2 chiffres).
Vous pouvez pousser ce concept plus loin en utilisant une base numérique beaucoup plus large... l'ensemble de tous les caractères qui sont des paramètres de chaîne de requête valides :
A-Z, a-z, 0-9, '.', '-', '~', '_', '+'.
Vous disposez ainsi d'une base de 67 caractères pour travailler (cf. Wikipedia sur QueryString ).
Jetez un coup d'œil à ce poste SO pour les méthodes de conversion de la base 10 en bases numériques arbitraires.
EDITAR:
Dans le poste de SO lié, regardez cette partie :
string xx = IntToString(42,
new char[] { '0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x'});
C'est presque ce dont vous avez besoin. Il suffit de l'étendre en ajoutant les quelques caractères qui lui manquent :
yz.-~_+
Il manque dans ce post une méthode pour revenir à la base 10. Je ne vais pas l'écrire :-) mais la procédure est la suivante :
Définissez un compteur que j'appellerai TOTAL.
Regardez le droite et trouver sa position dans le tableau.
TOTAL = (la position du caractère dans le tableau) Exemple : L'entrée est BA1. TOTAL est maintenant 1 (puisque "1" est en position 1 dans le tableau).
Maintenant, regardez le caractère suivant à gauche du premier et trouvez sa position dans le tableau. TOTAL += 47 * (la position du caractère dans le tableau) Exemple : L'entrée est BA1. TOTAL est maintenant (47 * 11) + 1 = 518
Maintenant, regardez le caractère suivant à gauche du précédent et trouvez sa position dans le tableau. TOTAL += 47 * 47 * (la position du caractère dans le tableau) Exemple : L'entrée est BA1. Le total est maintenant (47 * 47 * 10) + (47 * 11) + 1 = 243508
Et ainsi de suite.
Je vous suggère d'écrire un test unitaire qui convertit un certain nombre de nombres en base 10 en base 47 et vice-versa pour vérifier que votre code de conversion fonctionne correctement.
Notez comment vous avez représenté un nombre à 6 chiffres en base 10 en seulement 3 chiffres en base 47 :-)