在阅读另一个问题时,在创建URL缩短服务时,建议获取行的ID,然后将其转换为base 62(0到9,a到z和A到Z)。是否有一个标准函数可以在Ruby中实现这一目标?
编辑: 不确定我是否足够清楚。
这样的事情: 123456.radix(62)
应该给出123456的基数62。
我正在考虑写一个,如果它还没有。
答案 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编码解决方案: