Możesz reprezentować szesnastkowy identyfikator w bazie wyższej niż 16 aby skrócić jego reprezentację w postaci ciągu. Ruby ma wbudowaną obsługę pracy z bazami z 2 do 36 .
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
Aby przekonwertować go z powrotem na 24-znakowy ciąg, możesz zrobić coś takiego:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
Aby uzyskać lepszą „kompresję”, możesz przedstawić id w bazie wyższej niż 36 . Istnieją biblioteki Ruby, które ci w tym pomogą. all-your-base
klejnot jest jedną z takich bibliotek.
Polecam bazę 62 reprezentacja, ponieważ używa tylko 0-9 , a-z i A-Z znaków, co oznacza, że domyślnie adres URL jest bezpieczny.