1

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

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

4

2 回答 2

7

这是一种方法:

  [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)> 
于 2012-05-27T00:43:37.353 回答
0

这是一个稍微复杂的片段(与 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-05-27T00:51:19.247 回答