0

したがって、これがを"%05d" % 123返す場合#=> "00123"、私も戻ることを期待"%05d" % 0123#=> "00123"ますが、代わりにを返します#=> "00083"。なんでそうなの?

4

1 に答える 1

7

0xで始まる数値が16進数として解釈されるのと同じように、0で始まる数値は8進数として解釈されます。83は8進数で123として表されます。

irb(main):001:0> 0123
=> 83
irb(main):002:0> 1*8**2 + 2*8**1 + 3*8**0
=> 83
irb(main):003:0> "%05d" % 0x7b
=> "00123"
于 2012-12-05T21:17:00.427 に答える