我想将一个整数编码为基数 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
?
我想将一个整数编码为基数 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
?
您不是从基数 10 转换,而是从基数 36 转换,例如,在 Ruby 控制台或 irb 中:
> "9ix".to_i(36)
#=> 12345
从文档中解释:
返回将 str 解释为整数基数( 2 到 36 之间)的结果。
也就是说,在基数之间转换数字不是微不足道的吗?遍历字符,相乘,相加。