逆算

a - Swing 42 (+C) - Rubyistより。文字列で26進数ネタ。勉強のために逆算してみた。

n = 0
"unko".each_byte do |c|
  n = n * (?z - ?a + 1) + c - (?a - 1)
end
n -= 1
# => 378860

最後に1引くのは文字列末尾の a が26進数での0として扱うが、他の桁では a は 1 として扱うから。つまり "aaa" は 1 * 26 * 26 + 1 * 26 + 0 (== 702) となる。へー。