2012-12-05 52 views
0

因此,如果这个"%05d" % 123返回#=> "00123",我希望"%05d" % 0123也返回#=> "00123",但它会返回#=> "00083"。这是为什么?替代Ruby字符串

回答

7

以0开头的数字被解释为八进制数字,就像以0x开头的数字被解释为十六进制一样。 83以八进制表示为123。

irb(main):001:0>
=> 83 
irb(main):002:0> 1*8**2 + 2*8**1 + 3*8**0 
=> 83 
irb(main):003:0> "%05d" % 0x7b 
=> "00123" 
+0

感谢您的解释!我最终用这个代替了: 'value =“0123” value = value.rjust(5,'0')' – Matt