Du kan repræsentere et hexadecimalt id i en base højere end 16
for at gøre dens strengrepræsentation kortere. Ruby har indbygget support til at arbejde med baser fra 2
op til 36
.
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
For at konvertere den tilbage til en 24-tegns streng kan du gøre noget som dette:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
For at opnå bedre "komprimering" kan du repræsentere id'et i base højere end 36
. Der er Ruby-biblioteker, der vil hjælpe dig med det. all-your-base
gem er et sådant bibliotek.
Jeg anbefaler base 62
repræsentation, da den kun bruger 0-9
, a-z
og A-Z
tegn, hvilket betyder, at det er URL-sikkert som standard.