Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我试图找到一种使用八进制编号引用数组索引的干净方法。如果我正在寻找八进制 13 的数组索引,它应该返回a[11].
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