是否有一种简单的方法可以在Ruby中用任意基础表达Integers?

时间:2012-05-23 14:57:41

标签: ruby erlang integer

Erlang有一个非常好的语法来表达具有任意基数的整数。它是base#number

示例:

> 2#101010.
42
> 16#2A.
42

Ruby中有类似的东西吗? 我已经知道#to_i(base=10)

4 个答案:

答案 0 :(得分:5)

为任意基础执行此操作的简单但非常有效或安全的方法:

class Fixnum
  def as_base(b)
    to_s.to_i(b)
  end
end

101010.as_base(2)
42

(你必须为class Bignum做同样的事情来处理任意大整数文字......)

答案 1 :(得分:4)

有一个很好的 list 可能的文字,但它基本归结为

10 # base 10 by default
0b1010 # base 2
012 # base 8
0xa # base 16

答案 2 :(得分:3)

除了C语言的0x符号表示十六进制数,0b表示二进制,或0表示八进制数,语法中没有任何内容。 to_i在实践中运作良好。

答案 3 :(得分:3)

如果你有一个int,你可以在任何带有to_s的基础上表达它,就像字符串上的to_i一样。

irb(main):013:0> puts 255.to_s(2)
11111111