7

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

irb(main):001:0> 100[0]
=> 0
irb(main):002:0> 100[1]
=> 0
irb(main):003:0> 100[2]
=> 1

所以我假设它正在获取数字,索引如下:

NUMBER: 1|0|0
        -----
INDEX:  2|1|0

我在号码上尝试了这个,789结果出乎意料。

irb(main):004:0> 789[0]
=> 1
irb(main):005:0> 789[1]
=> 0
irb(main):006:0> 789[2]
=> 1

我希望它返回9, then 8, then7如果它正在获取数字。从这个结果来看,这显然没有发生,那么在数字上使用括号表示法到底有什么作用呢?

4

1 回答 1

13

这些是您要提取的二进制位。另一种查看方式是使用to_s指示所需基数的参数。

>> 789.to_s(2)
=> "1100010101"

字符串索引是从左到右的,因此您无法[]在字符串上进行比较,但请注意(从右到左)数字是 1、0、1 的方式。

如果您有兴趣,这里是文档:http ://ruby-doc.org/core-1.9.3/Fixnum.html#method-i-5B-5D

于 2013-03-29T00:18:34.847 回答