MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Komprimieren eines Hex-Strings in Ruby/Rails

Sie könnten eine hexadezimale ID in einer höheren Basis als 16 darstellen um die Zeichenfolgendarstellung zu verkürzen. Ruby hat eingebaute Unterstützung für das Arbeiten mit Basen von 2 bis zu 36 .

b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"

Um es wieder in eine 24-stellige Zeichenfolge umzuwandeln, könnten Sie etwa so vorgehen:

'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"

Um eine bessere "Komprimierung" zu erreichen, könnten Sie die ID in der Basis höher als 36 darstellen . Es gibt Ruby-Bibliotheken, die Ihnen dabei helfen. all-your-base gem ist eine solche Bibliothek.

Ich empfehle Basis 62 Darstellung, da sie nur 0-9 verwendet , a-z und A-Z Zeichen, was bedeutet, dass es standardmäßig URL-sicher ist.