使用insert,我将值推送到Array作为:

myarray=[22,33,44]
myarray.insert(0,02)
# => [2,22,33,44]

如果执行以下操作,我将得到:
myarray.insert(0,020)
# => [16,2,22,33,44]

020变成16?如果我这样做,我会得到:
myarray.insert(0,0200)
# => [128,16,2,22,33,44]

0200变成128?我能知道原因吗?

最佳答案

如果数字前面有一个零,ruby会将其视为八进制数(基数8)
你也可以用二进制/十六进制来做类似的事情

0x20 => 32 (hexadecimal)
020 => 16 (octal)
0b10 => 2 (binary)
080 => Invalid octal digit

09-25 19:23