ちょっと必要があって、純粋に計算だけでシフトJIS と JIS の区点コードを変換するプログラムを書いてみました。
# sjis :: [Integer] code (ex. 0x8140) def sjis2jis(sjis) c1 = sjis / 256 c2 = sjis % 256 seq = (c1<=159 ? c1-129 : c1-193)*188+(c2<=126 ? c2-64 : c2-65) ku = seq / 94 + 1 ten = seq % 94 + 1 return ku, ten end # ku :: [Integer] KU code # ten :: [Integer] TEN code def jis2sjis(ku, ten) seq = (ku-1)*94+(ten-1) c1 = seq / 188 c2 = seq % 188 (c1<31 ? c1+129 : c1+193)*256 + (c2<63 ? c2+64 : c2+65) end