10也许像:1"0A".hex #=>10我知道如何自己动手,但是使用内置的"/>

关于十六进制:在Ruby中将整数转换为十六进制字符串

关于十六进制:在Ruby中将整数转换为十六进制字符串

Converting an integer to a hexadecimal string in Ruby

是否有将Ruby中的整数转换为其等效的十六进制的内置方法?

类似于String#to_i的东西:

1
"0A".to_i(16) #=>10

也许像:

1
"0A".hex #=>10

我知道如何自己动手,但是使用内置的Ruby函数可能更有效。


您可以给to_s设置10以外的基数:

1
10.to_s(16)  #=>"a"

如何使用% / sprintf

1
2
i = 20
"%x" % i  #=>"14"


总结一下:

1
2
3
4
5
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"

这是另一种方法:

1
sprintf("%02x", 10).upcase

请在此处查看sprintf的文档:http://www.ruby-doc.org/core/classes/Kernel.html#method-i-sprintf


以防万一您偏爱如何设置负数的格式:

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


推荐阅读