ruby中是否有基数功能?

时间:2009-05-18 20:16:05

标签: ruby

在阅读另一个问题时,在创建URL缩短服务时,建议获取行的ID,然后将其转换为base 62(0到9,a到z和A到Z)。是否有一个标准函数可以在Ruby中实现这一目标?

编辑: 不确定我是否足够清楚。

这样的事情: 123456.radix(62)

应该给出123456的基数62。

我正在考虑写一个,如果它还没有。

3 个答案:

答案 0 :(得分:9)

Ruby整数类中的to_s方法有一个可选参数,用于指定基类,如:

123456.to_s(16)

但是,它只接受2到36之间的值作为基数。

如果您想编写自己的编码器,

This snippet可能是一个很好的起点。还有一个base62 Ruby Gem,它在base62中添加了编码和解码方法。

答案 1 :(得分:5)

由于我最近需要在Ruby中使用radix,因为这是'Ruby radix'的第一个结果,我想我会指出现在有a gem用于处理基数。以下是使用它编写OP示例的方法: 1

require 'radix'
SIXTYTWO = ('0'..'9').to_a + ('a'..'z').to_a + ('A'..'Z').to_a
123456.b(62).to_s(SIXTYTWO)

1 需要SIXTYTWO数组,因为gem不会对用于编码结果的字符做出任何假设。

答案 2 :(得分:0)

无法打开base62编码gem的链接,也不像radix gem的功能。所以发现这是一个快速简单的base62编码解决方案:

https://github.com/steventen/base62-rb