在 Ruby 中将整数转换为十六进制字符串
-
01-07-2019 - |
题
是否有内置方法可以将 Ruby 中的整数转换为其十六进制等效值?
就像相反的东西 String#to_i
:
"0A".to_i(16) #=>10
也许就像:
"0A".hex #=>10
我知道如何自己开发,但使用内置 Ruby 函数可能更有效。
解决方案
你可以给 to_s
10 以外的基数:
10.to_s(16) #=> "a"
其他提示
总结一下:
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"
这是另一种方法:
sprintf("%02x", 10).upcase
请参阅文档 sprintf
这里: http://www.ruby-doc.org/core/classes/Kernel.html#method-i-sprintf
以防万一您对负数的格式有偏好:
p "%x" % -1 #=> "..f"
p -1.to_s(16) #=> "-1"
不隶属于 StackOverflow