是否有更好的方法来显示以十六进制数字显示前导0
?我想:如何以十六进制数字打印前导零
i.to_s(16)
但
2.to_s(16) #=> "2"
,我希望"02"
。我试图打印格式:
"%02x" % i
该协会致力于2
,但
"%02x" % 256 #=> "100"
,我想"0100"
。所以,我想出了这个:
class Integer
def to_hex_string
("%0x" % self).size % 2 == 0 ? "%0x" % self : "%0#{("%0x" % self).size+1}x" % self
end
end
它的工作原理:
2.to_hex_string #=> "02"
256.to_hex_string #=> "0100"
它的工作原理也与Bignumber
类,但它看起来很奇怪,这样一个简单的请求需要这样的伎俩。有什么更好的想法
如果你只想把一个零在号码前面,尝试' “0#{i.to_s(16)}”'或' “0%X” %i'。但是这通常表示一个八进制数。常用的十六进制前缀是“0x”,可以使用“%#x”%i“打印。 – Stefan 2014-10-28 11:15:34
感谢您的评论,但似乎to_s(16)与BigNumber – Bruno 2014-10-31 16:16:02