Ruby数字上的括号表示法

Doo*_*nob 7 ruby numbers square-bracket

我发现100在Ruby中的数字上使用括号表示法时,我得到了这个:

irb(main):001:0> 100[0]
=> 0
irb(main):002:0> 100[1]
=> 0
irb(main):003:0> 100[2]
=> 1
Run Code Online (Sandbox Code Playgroud)

所以我假设它得到了数字,索引如下:

NUMBER: 1|0|0
        -----
INDEX:  2|1|0
Run Code Online (Sandbox Code Playgroud)

我在数字上尝试了这个789意外的结果.

irb(main):004:0> 789[0]
=> 1
irb(main):005:0> 789[1]
=> 0
irb(main):006:0> 789[2]
=> 1
Run Code Online (Sandbox Code Playgroud)

我希望它会返回9,然后8,7如果它得到数字.从这个结果来看,这显然不会发生,那么在数字上使用括号表示法到底是做什么的呢?

Pet*_*ter 13

这些是您要删除的二进制位.另一种看待这种情况的方法是使用to_s一个指示所需基数的参数.

>> 789.to_s(2)
=> "1100010101"
Run Code Online (Sandbox Code Playgroud)

字符串索引是从左到右,因此您无法比较[]字符串,但请注意数字(从右到左)的数字是1,0,1.

如果您有兴趣,请参阅以下文档:http://ruby-doc.org/core-1.9.3/Fixnum.html#method-i-5B-5D