Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中如何将八进制数转换为十进制数?_Ruby_Octal - Fatal编程技术网

在Ruby中如何将八进制数转换为十进制数?

在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的八进

我试图找到一种使用八进制编号引用数组索引的干净方法。如果我在寻找八进制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

好极了!这就是我说的!谢谢。对于SSN和其他可能以零开头的情况,我们已经完全了解了。:)您需要使用该号码访问阵列这一事实意味着什么也没有。所以,我放弃了标签和标题中提到的所有数组。很抱歉,我不确定数组的索引是否有我可以访问的唯一性。这对我来说是一个非常新的领域!谢谢你纠正我的错误。问题是我认为很明显,没有编程语言,这很重要:-)