是否有內置的方式將Ruby中的整數轉換爲其十六進制等效項?在Ruby中將整數轉換爲十六進制字符串
喜歡的東西的String#to_i
相反:
"0A".to_i(16) #=>10
像或許:
"0A".hex #=>10
我知道如何推出自己的,但它可能是更有效地使用一個內置的Ruby的功能。
是否有內置的方式將Ruby中的整數轉換爲其十六進制等效項?在Ruby中將整數轉換爲十六進制字符串
喜歡的東西的String#to_i
相反:
"0A".to_i(16) #=>10
像或許:
"0A".hex #=>10
我知道如何推出自己的,但它可能是更有效地使用一個內置的Ruby的功能。
你可以給to_s
超過10以外的鹼基:
10.to_s(16) #=> "a"
這裏的另一種方法:
sprintf("%02x", 10).upcase
看到的文檔sprintf
here:http://www.ruby-doc.org/core/classes/Kernel.html#method-i-sprintf
總結:
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"
萬一你有了一個負數的格式偏好:
p "%x" % -1 #=> "..f"
p -1.to_s(16) #=> "-1"
感謝展示這一點,我需要的東西,會拿一個固定長度字符串預置爲'0'。例如:「%02X」%10#=>「0A」 – 2008-10-31 13:07:30
對於其他ruby新手:`「#%02x%02x%02x」%[255,0,10]#=>「#ff000a」` - 花了我一些時間來弄清楚如何發送幾個參數。 – ANeves 2011-03-22 19:08:30
這是一個非常棒的Ruby代碼片段! – OzBandit 2012-11-09 23:40:40