SJISからJISへの変換規則

漢字コードの第一バイト(上位バイト)をHIGH
            第二バイト(下位バイト)をLOW
とする。

HIGHが0x9F以下なら          HIGH=HIGH-0x71
それ以外なら                HIGH=HIGH-0xB1

(無条件)                   HIGH=HIGH×2+1

LOWの値が0x7Fより大きいなら LOW=LOW-0x01

LOWの値が0x9E以上なら       LOW=LOW-0x7D HIGH=HIGH+1
         それ以外なら       LOW=LOW-0x1F


プログラム例
char *sjistojis(unsigned char sjis[2])
{
  static unsigned char jis[2];

  jis[0]=sjis[0];
  jis[1]=sjis[1];
  if(jis[0]<=0x9f)
    jis[0]-=0x71;
  else
    jis[0]-=0xb1;

  jis[0]*=2;
  jis[0]++;

  if(jis[1]>=0x7F)
    jis[1]-=0x01;
  
  if(jis[1]>=0x9e){
    jis[1]-=0x7d;
    jis[0]++;
  }else
    jis[1]-=0x1f;
  return jis;
}


漢字コードのページに戻る。