Ruby で 10進数 <=> 62進数 などのコンバータ生成クラス
Ruby で 10進数 <=> 62進数 などのコンバータ生成クラス
なんか無性に Ruby が書きたくなったので、良くある短縮 URL ぽい 62 進数 (0-9, a-z, A-Z) とかに変換できるコンバータ生成クラスを作ってみた。
# 0-9, a-z, A-Z な char を渡す
d62 = DigitConvertor.new [('0'..'9'), ('a'..'z'), ('A'..'Z')].map {|r| r.to_a }.flatten
p d62.to(98798798735665662) #=> "7iuYfThXxc"
p d62.from("7iuYfThXxc") #=> 98798798735665662
もちろん 62 進数じゃなくても良いし、char は好きな記号とかを入れても良い。
$KCODE = 'u';
d8 = DigitConvertor.new %w{☆ ★ ♪ △ ▼ ○ ● ◎}
d8.to(987987987) #=> "◎♪◎☆◎☆☆☆♪△"
d8.from("◎♪◎☆◎☆☆☆♪△") #=> 987987987
以下コード