Vous pouvez représenter un identifiant hexadécimal dans une base supérieure à 16
pour rendre sa représentation sous forme de chaîne plus courte. Ruby a un support intégré pour travailler avec des bases de 2
jusqu'à 36
.
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
Pour le reconvertir en une chaîne de 24 caractères, vous pouvez faire quelque chose comme ceci :
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
Pour obtenir une meilleure "compression", vous pouvez représenter l'identifiant en base supérieur à 36
. Il existe des bibliothèques Ruby qui vous aideront avec cela. all-your-base
gem est l'une de ces bibliothèques.
Je recommande la base 62
représentation car elle n'utilise que 0-9
, a-z
et A-Z
caractères, ce qui signifie qu'il s'agit d'une URL sécurisée par défaut.