【问题标题】:How do I convert an octal number to decimal in Ruby?如何在 Ruby 中将八进制数转换为十进制数?
【发布时间】:2011-03-31 08:40:48
【问题描述】:

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


【解决方案1】:

使用 Ruby 的八进制整数文字语法。在你的数字前加一个 0,Ruby 会在解析时将其转换为八进制:

v = 013 # => 11
a[v]    # => 61

如果八进制数来自文件等外部来源,那么它已经是一个字符串,您必须像在示例中那样转换它:

number = gets.chomp # => "13"
v = number.to_i(8)  # => 11
a[v]                # => 61

【讨论】:

  • 甜蜜!我正是这个意思!谢谢。
  • SSN 和其他可能以零开头的情况的总陷阱。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
  • 2017-02-19
  • 2011-08-21
  • 2015-09-15
  • 1970-01-01
相关资源
最近更新 更多