Mat*_*ton 204 ruby hex base-conversion
是否有内置的方法将Ruby中的整数转换为十六进制等效?
与之相反的是String#to_i:
"0A".to_i(16) #=>10
Run Code Online (Sandbox Code Playgroud)
或许像:
"0A".hex #=>10
Run Code Online (Sandbox Code Playgroud)
我知道如何自己动手,但使用内置的Ruby函数效率可能更高.
Jea*_*ean 317
你可以给to_s10个以外的基数:
10.to_s(16) #=> "a"
Run Code Online (Sandbox Code Playgroud)
flx*_*kid 88
i = 20
"%x" % i #=> "14"
Run Code Online (Sandbox Code Playgroud)
Lri*_*Lri 74
总结一下:
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"
Run Code Online (Sandbox Code Playgroud)
Ult*_*rus 14
这是另一种方法:
sprintf("%02x", 10).upcase
Run Code Online (Sandbox Code Playgroud)
请参阅sprintf此处的文档:http://www.ruby-doc.org/core/classes/Kernel.html#method-i-sprintf
小智 6
以防万一您对负数的格式有偏好:
p "%x" % -1 #=> "..f"
p -1.to_s(16) #=> "-1"
Run Code Online (Sandbox Code Playgroud)