2008-09-17 11 views

Répondre

280

Vous pouvez donner to_s une base autre que 10:

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

C'est la réponse que je cherchais mais elle n'est pas documentée sur la page liée str.to_s => str est spécifiée comme n'acceptant pas les paramètres et a "Retourne le destinataire". comme la seule documentation, mais il semble fonctionner –

+0

Désolé pour cette erreur de copier coller bien sûr to_s sur chaîne ne prend pas d'arguments, mais sur Fixnum il le fait :) – Jean

+2

Ah, je cherchais sous Integer pour une méthode .to_s et couldn n'en trouve pas. Je vais regarder sous Fixnum la prochaine fois ainsi –

82

Comment l'utilisation %/sprintf:

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

Merci pour montrer cela, je besoin de quelque chose qui me obtenir une longueur fixe chaîne précédée de '0'. ex: "% 02X"% 10 # => "0A" –

+37

Et pour les autres débutants ruby ​​là-bas: '" #% 02x% 02x% 02x "% [255, 0, 10] # =>" # ff000a "' - m'a pris un peu pour comprendre comment envoyer plusieurs args. – ANeves

+1

Ceci est un extrait extrêmement impressionnant de Ruby! – OzBandit

64

Pour résumer:

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

Merci pour le nombre de formatage des chiffres. J'ai oublié ça :) – onetwopunch

+0

a sauvé ma journée. belle conversion RVB –

2

Juste au cas où vous avez une préférence pour la façon dont les nombres négatifs sont formatés:

p "%x" % -1 #=> "..f" 
p -1.to_s(16) #=> "-1" 
Questions connexes