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.