【问题标题】:Bracket notation on Ruby numbersRuby 数字上的括号表示法
【发布时间】:2013-03-29 08:18:34
【问题描述】:

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

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,然后是8,然后是7(如果它正在获取数字)。从这个结果来看,这显然没有发生,那么在数字上使用括号表示法到底有什么作用?

【问题讨论】:

    标签: ruby numbers square-bracket


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 哇,我真的从来没有考虑过这个!很高兴知道,谢谢! (可以在 10 分钟内接受)
    • 我也不知道。酷!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多