Bạn có thể đại diện cho một id hệ thập lục phân trong một cơ sở cao hơn 16
để làm cho biểu diễn chuỗi của nó ngắn hơn. Ruby có hỗ trợ tích hợp để làm việc với các cơ sở từ 2
lên đến 36
.
b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"
Để chuyển nó trở lại chuỗi 24 ký tự, bạn có thể làm như sau:
'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"
Để đạt được "độ nén" tốt hơn, bạn có thể đại diện cho id trong cơ sở cao hơn 36
. Có những thư viện Ruby sẽ giúp bạn điều đó. all-your-base
gem là một trong những thư viện như vậy.
Tôi khuyên bạn nên sử dụng cơ sở 62
đại diện vì nó chỉ sử dụng 0-9
, a-z
và A-Z
có nghĩa là nó là URL an toàn theo mặc định.