2008-09-17 15 views

Odpowiedz

280

Można dać to_s z innej podstawy niż 10:

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

Oto odpowiedź, której szukałem, ale nie jest ona udokumentowana połączona strona str.to_s => str jest określona jako nie akceptująca parametrów i ma "Zwraca odbiornik." jako jedyna dokumentacja, ale wydaje się działać –

+0

przepraszam za ten błąd wklejania oczywiście to_s na łańcuchu nie bierze argumentów, ale na Fixnum to robi :) – Jean

+2

Ach, szukałem pod Integer dla metody .to_s i cann nie możesz znaleźć. Zajrzę pod Fixnum następnym razem również –

82

Jak na temat korzystania %/sprintf:

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

Dzięki za pokazywanie tego, potrzebowałem czegoś, że dostanie mi stałą długość ciąg poprzedzony znakiem "0". np: "% 02X"% 10 # => "0A" –

+37

A dla innych początkujących rubinów: '" #% 02x% 02x% 02x "% [255, 0, 10] # =>" # ff000a "' - zabrał mnie trochę, aby dowiedzieć się, jak wysłać kilka argumentów. – ANeves

+1

To niesamowicie słaby fragment Ruby! – OzBandit

64

Podsumowując:

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

Dzięki za liczbę cyfrowego formatowania. Zapomniałem o tym :) – onetwopunch

+0

zaoszczędziłem mój dzień. ładna konwersja RGB –

2

tylko w przypadku wolą jak negatywne numery są sformatowane:

p "%x" % -1 #=> "..f" 
p -1.to_s(16) #=> "-1" 
Powiązane problemy