在Ruby中如何将八进制数转换为十进制数?
我试图找到一种使用八进制编号引用数组索引的干净方法。如果我在寻找八进制13的数组索引,它应该返回在Ruby中如何将八进制数转换为十进制数?,ruby,octal,Ruby,Octal,我试图找到一种使用八进制编号引用数组索引的干净方法。如果我在寻找八进制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的八进
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
好极了!这就是我说的!谢谢。对于SSN和其他可能以零开头的情况,我们已经完全了解了。:)您需要使用该号码访问阵列这一事实意味着什么也没有。所以,我放弃了标签和标题中提到的所有数组。很抱歉,我不确定数组的索引是否有我可以访问的唯一性。这对我来说是一个非常新的领域!谢谢你纠正我的错误。问题是我认为很明显,没有编程语言,这很重要:-)