我试图找到一种使用八进制编号引用数组索引的干净方法。如果我正在寻找八进制 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)