2008-09-17 24 views

Respuesta

280

Usted puede dar to_s una base distinta de 10:

10.to_s(16) #=> "a" 
+3

Esa es la respuesta que estaba buscando pero no está documentada en la página enlazada str.to_s => str se especifica como que no acepta parámetros y tiene "Devuelve el receptor". como la única documentación, pero parece funcionar –

+0

perdón por ese error de copiar y copiar, por supuesto to_s en cadena no toma argumentos pero en Fixnum sí :) – Jean

+2

Ah, buscaba en Integer un método .to_s y couldn encuentra uno. Voy a mirar debajo de Fixnum la próxima vez también –

82

Cómo sobre el uso %/sprintf:

i = 20 
"%x" % i #=> "14" 
+13

Gracias por mostrar esto, necesitaba algo que me gustaría obtener una longitud fija cadena precedida de '0'. ej .: "% 02X"% 10 # => "0A" –

+37

Y para los otros novatos de rubí: '" ## 02x% 02x% 02x "% [255, 0, 10] # =>" # ff000a "' - Me llevó un poco descubrir cómo enviar varios argumentos. – ANeves

+1

¡Este es un fragmento extremadamente impresionante de Ruby! – OzBandit

64

En resumen:

p 10.to_s(16) #=> "a" 
p "%x" % 10 #=> "a" 
p "%02X" % 10 #=> "0A" 
p sprintf("%02X", 10) #=> "0A" 
p "#%02X%02X%02X" % [255, 0, 10] #=> "#FF000A" 
+0

Gracias por el número de formateo de dígitos. Me olvidé de eso :) – onetwopunch

+0

me salvó el día. buena conversión RGB –

2

Sólo en caso de tener una preferencia por la forma en números negativos tienen el formato:

p "%x" % -1 #=> "..f" 
p -1.to_s(16) #=> "-1" 
Cuestiones relacionadas