2009-05-18 12 views
8

Al leer aquí otra pregunta, al crear un servicio de acortamiento de URL, se sugirió tomar la ID de la fila y luego convertirla a la base 62 (0 a 9, de la a a la z, de la A a la Z). ¿Hay una función estándar para lograr esto en Ruby?¿Hay una función de raíz en rubí?

Edit: No estoy seguro de si era lo suficientemente claro.

Algo como esto: 123456.radix (62)

debería dar la base 62 de 123456.

Estoy pensando en escribir una, si no está ya allí.

Respuesta

9

El método to_s en las clases de enteros Ruby tiene un parámetro opcional que especifica la base, algo como:

Sin embargo, sólo acepta valores 2 a 36 como el radix.

This snippet podría ser un buen lugar de partida si quiere escribir su propio codificador. También hay un base62 Ruby Gem que agrega métodos para codificar y decodificar en base62.

5

Como hace poco necesitaba usar radixes en Ruby, y dado que este es el primer resultado para 'Ruby radix', pensé que señalaría que ahora hay a gem para trabajar con radixes. Aquí es cómo codificar el ejemplo de la OP usarlo: se necesita

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

La matriz SIXTYTWO porque la joya no hace ninguna suposición acerca de qué caracteres a utilizar para codificar el resultado.

Cuestiones relacionadas