我试图找到一种使用八进制编号引用数组索引的简洁方法.如果我正在寻找八进制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
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
使用Ruby的八进制整数文字语法.在数字前面加一个0,Ruby在解析时将其转换为八进制:
v = 013 # => 11
a[v] # => 61
Run Code Online (Sandbox Code Playgroud)
如果八进制数来自外部源(如文件),那么它已经是一个字符串,您必须像在示例中一样进行转换:
number = gets.chomp # => "13"
v = number.to_i(8) # => 11
a[v] # => 61
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3414 次 |
| 最近记录: |