- ベストアンサー
C言語について
C言語について質問です。 ASCIIコードでは'0'が48、'a'が97になっていますよね。 このような感じで全角の平仮名や漢字などの文字をを数値として表す方法を探しています。 できれば簡単な例文なども付けていただけると助かります。 それではよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私より前の回答者の方の回答を見れば分かると思いますが、 C言語では、漢字であろうと、半角英数であろうと、 数値で表現されています。 半角英数字などの1バイト文字は、0~255までの数値で 表現が可能でC言語のコード上に'A'とすると数値として扱われます。 しかし、複数バイト文字(マルチバイト文字)、 漢字などは2バイト(大雑把に言えば2文字)を 使って表される為C言語上での扱いは文字列として扱う事になります。 (そういう風にみなしてプログラムすると言う事であって C言語の規格で明確に決まっているわけではありません。 バラバラに扱ってもそれは文字が崩れるだけの話です。) 以下のサンプルはマルチバイト文字のコードを 表示する簡単なサンプルです。 /* * VC++6.0 WinXP Pro SP2 */ #include <stdio.h> int main( int argc, char** argv ) { /* 文字コードの表現範囲は符号なしのため unsigned */ unsigned char c1,c2; printf( "Alt+半角/全角で全角入力\n" ); scanf("%c%c",&c1,&c2); printf("%02X %02X\n", c1, c2); return 0; }
その他の回答 (3)
- sakusaker7
- ベストアンサー率62% (800/1280)
Oh-Orangeさん、euc(euc-jp)は通常はそういう表現をしません。 2バイトで構成される文字の2バイト目も最上位ビットを立てます。 それから一文字が3バイトで構成されることもあります(JIS X 0212)。 半角カナは 0x8eを先行させて2バイトで構成されます。 文字コードの話 http://euc.jp/i18n/charcode.ja.html
お礼
返事が遅くなってすいません。 ありがとうございました。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★文字変換の処理を行いたいのですか? ・JISコード漢字は 0x2121~0x7E7E です。 1バイト文字が 0x21~0x7E の範囲。 2バイト文字も 0x21~0x7E の範囲。 ・EUCコード漢字は 0xA121~0xAE7E です。半角カタカナも含めるとちょっと複雑になります。 1バイト文字が 0xA1~0xAE の範囲。 2バイト文字が 0x21~0x7E の範囲。 ・シフトJISコード漢字は 0x8140~0xFCFC です。 1バイト文字が 0x81~0x9F、0xE0~0xFC の範囲。 2バイト文字が 0x40~0xFC の範囲、ただし 0x7F は除外。 ・シフトJISコードの場合は次のようにしてコード化できます。 『あ』という文字は 1バイト目が 0x82 2バイト目は 0xA0 です。よって 0x82A0 が『あ』の文字コードになります。 下にそのサンプルを載せます。 サンプル: char moji[] = "あ"; int code; これが文字コードの計算(処理) ↓ code = (moji[0] << 8 | moji[1]); printf( "『%s』の文字コードは 0x%04X です。\n", moji, code );
お礼
返事が遅れてすいません。 無事に解決しました。 ありがとうございます。
- gonbee774
- ベストアンサー率38% (198/511)
『文字コード』で検索してみました。 #なお、ASCIIコードもですが、特にC言語の範疇というわけではないと思います。
- 参考URL:
- http://ash.jp/code/index.htm
お礼
早速のお返事ありがとうございます。 私は最近プログラミングを始めたばかりのせいか、ASCIIコードはCのものなんだなぁと思っていました。 もっと勉強します。
お礼
お返事ありがとうございます。 無事に解決しました。 丁寧な説明で分かりやすかったです。