1

[0,0,1,0].to_i = 2またはなどのビット配列を変換しようとしています[0,1,0,1].to_i = 5

Rubyでこれを行うにはどのような方法がありますか?

4

2 に答える 2

7

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)> 
于 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 に答える