Du kan representera ett hexadecimalt id i en bas som är högre än 16
för att göra dess strängrepresentation kortare. Ruby har inbyggt stöd för att arbeta med baser från 2
upp till 36
.
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
För att konvertera tillbaka den till en sträng med 24 tecken kan du göra något så här:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
För att uppnå bättre "komprimering" kan du representera id:t i bas högre än 36
. Det finns Ruby-bibliotek som hjälper dig med det. all-your-base
gem är ett sådant bibliotek.
Jag rekommenderar bas 62
representation eftersom den bara använder 0-9
, a-z
och A-Z
tecken vilket betyder att den är URL-säker som standard.