我想将一个整数编码为基数36,然后将其解码为基数10.编码步骤很简单:
12345.to_s(36)
=> "9ix"
现在我想将其解码回基数为10的整数。但这不起作用:
"9ix".to_i(10)
=> 9
那我该怎么写
def base36to10(b36)
# ?
end
这样
r = rand(100000)
base36to10(r.to_s(36)) == r
答案 0 :(得分:8)
您没有从基数10转换,而是从基数36转换:
1.9.3p448 :001 > "9ix".to_i(36)
=> 12345
从the docs转发:
返回将str解释为整数基 base (2到36之间)的结果。
那说,基地之间的数字转换是不是微不足道的?迭代字符,相乘,添加。