【问题标题】:Ruby: Convert a bitarray to an integerRuby:将位数组转换为整数
【发布时间】:2012-06-02 00:06:35
【问题描述】:

我正在尝试转换位数组,例如[0,0,1,0].to_i = 2[0,1,0,1].to_i = 5

在 Ruby 中有哪些可能的方法来做到这一点?

【问题讨论】:

    标签: ruby bitarray


    【解决方案1】:

    这是一种方法:

      [1] pry(main)> [0,0,1,0].join.to_i(2)
      => 2
      [2] pry(main)> [0,1,0,1].join.to_i(2)
      => 5
      [3] pry(main)> 
    

    【讨论】:

      【解决方案2】:

      这是一个稍微复杂的 sn-p(与 Ryan 相比)。

      a1 = [0,0,1,0]
      a2 = [0,1,0,1]
      
      def convert a
        a.reverse.each.with_index.reduce(0) do |memo, (val, idx)|
          memo |= val << idx
        end
      end
      
      convert a1 # => 2
      convert a2 # => 5
      

      【讨论】:

        猜你喜欢
        • 2012-04-14
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-30
        • 1970-01-01
        • 2010-10-21
        相关资源
        最近更新 更多