シフトJISの判別
Posted: 2010年7月22日(木) 17:45
アルファベットと日本語が混ざった文字列の文字数を数えるために,次のようにしたところ
うまくいきませんでした。
char *str = "abcあいう";
int len = 0; //文字列の長さ
for( int i = 0; str != '\0'; i++ ){
if( str >= 0x81 && str <= 0x9f ){
i++;
}
len++;
}
そこで,いろいろ試した結果,
printf( "%x", str[3] );
の出力が,
ffffff82
となりました。
私はstr[3]がif文で0x82と扱われると思っていたのですが,実際は0xffffff82となっていたようです。
そこで疑問なのですが,なぜ0xffffff82となるのでしょうか?
うまくいきませんでした。
char *str = "abcあいう";
int len = 0; //文字列の長さ
for( int i = 0; str != '\0'; i++ ){
if( str >= 0x81 && str <= 0x9f ){
i++;
}
len++;
}
そこで,いろいろ試した結果,
printf( "%x", str[3] );
の出力が,
ffffff82
となりました。
私はstr[3]がif文で0x82と扱われると思っていたのですが,実際は0xffffff82となっていたようです。
そこで疑問なのですが,なぜ0xffffff82となるのでしょうか?