我试图以八进制编码的方式引用数组的索引。如果我要查找八进制 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
有更好的方法吗?
我试图以八进制编码的方式引用数组的索引。如果我要查找八进制 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
有更好的方法吗?
使用Ruby的八进制整数字面量语法。在数字前面放置一个0,Ruby会在解析时把它转换为八进制:
v = 013 # => 11
a[v] # => 61
如果八进制数来自外部源(如文件),那么它已经是一个字符串,您需要像在示例中一样进行转换:
number = gets.chomp # => "13"
v = number.to_i(8) # => 11
a[v] # => 61