読者です 読者をやめる 読者になる 読者になる

シフトJIS - JIS変換

Ruby

ちょっと必要があって、純粋に計算だけでシフト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