/* 上位・下位コード取得 */
HighAsc = *(str_in+i);
LowAsc = *(str_in+(i+1));
/* 半角カタカナ */
if(0xA0 <= HighAsc && HighAsc <= 0x40){
*str_out = 0x8E;
*(str_out + 1) = HighAsc;
str_out+=2;
}
/* 全角(半角カタカナを除く) */
else if(HighAsc >= 0x81 && LowAsc >= 0x40){
/* 下位バイトが 0x40 〜 0x9E のとき */
if(0x40 <= LowAsc && LowAsc <= 0x9E){
/* ------------------------------------------- */
/* 上位バイト設定 */
/* ------------------------------------------- */
/* 上位バイトが 0x81 〜 0x9F のとき */
if(0x81 <= HighAsc && HighAsc <= 0x9F)
*str_out = 2 * HighAsc - 97;
else if(0xE0 <= HighAsc && HighAsc <= 0xEF)
*str_out = 2 * HighAsc - 225;
/* ------------------------------------------- */
/* 下位バイト設定 */
/* ------------------------------------------- */
if(LowAsc > 0x7F)
*(str_out + 1) = LowAsc + 0x60;
else
*(str_out + 1) = LowAsc + 0x61;
}
/* 下位バイトが 0x9F 〜 0xFC のとき */
else if(0x9F <= LowAsc && LowAsc <= 0xFC){
/* ------------------------------------------- */
/* 上位バイト設定 */
/* ------------------------------------------- */
/* 上位バイトが 0x81 〜 0x9F のとき */
if(0x81 <= HighAsc && HighAsc <= 0x9F)
*str_out = 2 * HighAsc - 96;
else if(0xE0 <= HighAsc && HighAsc <= 0xEF)
*str_out = 2 * HighAsc - 224;
/* ------------------------------------------- */
/* 下位バイト設定 */
/* ------------------------------------------- */
*(str_out + 1) = LowAsc + 0x2;
}
i++;
str_out+=2;
}
/* 1バイト文字 */
else{
*str_out = HighAsc;
str_out++;
}
}
*(str_out) ='\0';
/* 先頭位置に戻す */
str_out = p;
}