- ベストアンサー
Shift_JIS(16進)を文字に変換する方法
お世話になります。 現在、文字コードを文字に変換するプログラムを組んでいるのですが、Shift_JIS(16進)を文字に変換する方法が分からず困っています。 具体的には、"82a0 "という文字列を持っていて、それを「あ」という文字に変換するといった感じなのですが・・・。C言語でこれは可能なのでしょうか?可能なのだとしたらどういった手順で行えばよろしいのでしょう。 因みにC++ではなくC言語です。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
C言語では、文字列はcharの配列です。一つ一つに文字を表わす「数値」が入っています。 例えば、ASCIIコードを使っているなら char str[] = "ABC" ; だったら str[0] == 65 == 'A' str[1] == 66 == 'B' str[2] == 67 == 'C' です。 Shift_JIS の場合、2文字で全角1文字分です。 char kanji[] = "あ" ; なら kanji[0] == 0x82 kanji[1] == 0xa0 kanji[0]とkanji[1]を合せて 0x82a0→あ なので、 16進文字列2つ→8bit整数に変換→charの配列に代入 を16進文字列の長さだけ繰り返すことになります。
その他の回答 (1)
- TooManyBugs
- ベストアンサー率27% (1472/5321)
回答No.1
C言語そのものには文字の概念が有りません。 OSやH/Wに依存する問題ですからこれらを明らかにしなければ答えは出ません。
お礼
ご返信ありがとうございます! 16進数文字列をいったん16進数longに戻してから0xffを&してcharに突っ込むことで、理想通りの動きになりました!もっと楽な方法があるかもしれないので、これを手掛かりに色々試してみたいと思います! ありがとうございました!