2009-05-18 13 views
8

Durante la lettura di un'altra domanda qui, durante la creazione di un servizio di abbreviazione URL, è stato suggerito di prendere l'ID della riga e quindi convertirlo in base 62 (da 0 a 9, dalla A alla Z e dalla A alla Z). Esiste una funzione standard per ottenere questo risultato in Ruby?Esiste una funzione radix in ruby?

Modifica: Non so se sono stato abbastanza chiaro.

Qualcosa di simile a questo: 123456.radix (62)

dovrebbe dare la base 62 del 123456.

sto pensando di scrivere uno, se non è già presente.

risposta

9

Procedimento to_s in classi interi Ruby ha un parametro facoltativo che specifica la base, qualcosa come:

Tuttavia, accetta solo valori da 2 a 36 come la radice.

This snippet potrebbe essere un buon punto di partenza se si desidera scrivere il proprio encoder. C'è anche un base62 Ruby Gem che aggiunge metodi per la codifica e la decodifica in base62.

5

Dal momento che di recente ho avuto bisogno di usare le radix in Ruby, e poiché questo è il primo risultato per "Ruby radix", ho pensato di far notare che ora c'è a gem per lavorare con le radix. Ecco come codificare l'esempio del PO di usarlo:

require 'radix' 
SIXTYTWO = ('0'..'9').to_a + ('a'..'z').to_a + ('A'..'Z').to_a 
123456.b(62).to_s(SIXTYTWO) 

La matrice SIXTYTWO è necessaria perché la gemma non fa alcuna ipotesi su quali caratteri da utilizzare per codificare il risultato.

Problemi correlati