tiqavのpermalinkの62進数ID(http://tiqav.com/2iTとかhttp://tiqav.com/1UNとか)が短くてかっこ良かったので作ってみた。
数字を0-9a-zA-Zに変換するのと、逆に数字に戻す事ができる。

#!/usr/bin/env ruby

class AlphaNum

def self.table
@@table ||= '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')
end

def self.encode(num)
num > 61 ? self.encode(num/62)+self.table[num%62] : self.table[num%62]
end

def self.decode(str)
arr = str.split('').map{|i| self.table.index i }
for i in 0...arr.size do
return arr[i] if i == arr.size-1
arr[i+1] += arr[i]*62
end
end
end

(0...100).each do |i|
enc = AlphaNum.encode i
dec = AlphaNum.decode enc
puts "#{i} => #{enc} => #{dec}"
end
実行結果
0 => 0 => 0
1 => 1 => 1
2 => 2 => 2
3 => 3 => 3
4 => 4 => 4
5 => 5 => 5
6 => 6 => 6
7 => 7 => 7
8 => 8 => 8
9 => 9 => 9
10 => a => 10
11 => b => 11
12 => c => 12
13 => d => 13
14 => e => 14
(略)
87 => 1p => 87
88 => 1q => 88
89 => 1r => 89
90 => 1s => 90
91 => 1t => 91
92 => 1u => 92
93 => 1v => 93
94 => 1w => 94
95 => 1x => 95
96 => 1y => 96
97 => 1z => 97
98 => 1A => 98
99 => 1B => 99