5

我想将一个整数编码为基数 36,然后将其解码为基数 10。编码步骤很简单:

12345.to_s(36)
=> "9ix"

现在我想将它解码回以 10 为底的整数。但这不起作用:

"9ix".to_i(10)
=> 9

那我怎么写

def base36to10(36)
  # ?
end

以便

r = rand(100000)
base36to10(r.to_s(36)) == r

?

4

1 回答 1

11

您不是从基数 10 转换,而是从基数 36 转换,例如,在 Ruby 控制台或 irb 中:

> "9ix".to_i(36)
#=> 12345

文档中解释

返回将 str 解释为整数基数 2 到 36 之间)的结果。

也就是说,在基数之间转换数字不是微不足道的吗?遍历字符,相乘,相加。

于 2013-11-14T03:09:09.267 回答