Можете да представите шестнадесетичен идентификатор с основа, по-висока от 16
за да направи неговото низово представяне по-кратко. Ruby има вградена поддръжка за работа с бази от 2
до 36
.
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
За да го конвертирате обратно в низ от 24 знака, можете да направите нещо подобно:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
За да постигнете по-добро „компресиране“, можете да представите идентификатора в база, по-висока от 36
. Има Ruby библиотеки, които ще ви помогнат с това. all-your-base
gem е една такава библиотека.
Препоръчвам база 62
представяне, тъй като използва само 0-9
, a-z
и A-Z
знака, което означава, че URL адресът е безопасен по подразбиране.