MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Compressione di una stringa esadecimale in Ruby/Rails

Potresti rappresentare un ID esadecimale in una base maggiore di 16 per rendere più breve la sua rappresentazione di stringa. Ruby ha il supporto integrato per lavorare con le basi da 2 fino a 36 .

b36 = '4b3fc1400de0690bf2000001'.hex.to_s(36)
# => "29a6dblglcujcoeboqp"

Per riconvertirlo in una stringa di 24 caratteri potresti fare qualcosa del genere:

'%024x' % b36.to_i(36)
# => "4b3fc1400de0690bf2000001"

Per ottenere una migliore "compressione" potresti rappresentare l'id in base superiore a 36 . Ci sono librerie Ruby che ti aiuteranno in questo. all-your-base gem è una di queste librerie.

Raccomando la base 62 rappresentazione in quanto utilizza solo 0-9 , a-z e A-Z caratteri, il che significa che è protetto dagli URL per impostazione predefinita.