3

8 進数を使用して配列のインデックスを参照するクリーンな方法を見つけようとしています。8 進数 13 の配列インデックスを探している場合は、 の値を返す必要がありますa[11]

これは私がそれを達成するために思いついたものですが、あまりエレガントでも効率的でもないようです:

a = [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62 ]

v = 13

puts a[v.to_s.to_i(8)]  # => 61
 # OR
puts a[v.to_s.oct]      # => 61

より良い方法はありますか?

4

1 に答える 1

7

Rubyの8進整数リテラル構文を使用します。数値の前に0を付けると、Rubyは解析中に8進数に変換します。

v = 013 # => 11
a[v]    # => 61

8進数がファイルなどの外部ソースからのものである場合、それはすでに文字列であり、例で行ったように変換する必要があります。

number = gets.chomp # => "13"
v = number.to_i(8)  # => 11
a[v]                # => 61
于 2010-08-18T05:08:51.330 に答える