Hexadecimální id můžete představovat v základu vyšším než 16
aby byla jeho řetězcová reprezentace kratší. Ruby má vestavěnou podporu pro práci s bázemi z 2
až do 36
.
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
Chcete-li jej převést zpět na 24znakový řetězec, můžete udělat něco takového:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
Chcete-li dosáhnout lepší "komprese", můžete uvést id v základu vyšším než 36
. Existují knihovny Ruby, které vám s tím pomohou. all-your-base
gem je jednou z takových knihoven.
Doporučuji základ 62
reprezentace, protože používá pouze 0-9
, a-z
a A-Z
znaků, což znamená, že je ve výchozím nastavení bezpečné pro adresy URL.