MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Compression d'une chaîne hexadécimale en Ruby/Rails

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.