最大1万円超分の電子書籍プレゼント♪

 お世話になります。
 現在、文字コードを文字に変換するプログラムを組んでいるのですが、Shift_JIS(16進)を文字に変換する方法が分からず困っています。
 具体的には、"82a0 "という文字列を持っていて、それを「あ」という文字に変換するといった感じなのですが・・・。C言語でこれは可能なのでしょうか?可能なのだとしたらどういった手順で行えばよろしいのでしょう。
 因みにC++ではなくC言語です。
 よろしくお願いします。

gooドクター

A 回答 (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進文字列の長さだけ繰り返すことになります。
    • good
    • 1
この回答へのお礼

ご返信ありがとうございます!
16進数文字列をいったん16進数longに戻してから0xffを&してcharに突っ込むことで、理想通りの動きになりました!もっと楽な方法があるかもしれないので、これを手掛かりに色々試してみたいと思います!
ありがとうございました!

お礼日時:2012/06/22 09:08

C言語そのものには文字の概念が有りません。



OSやH/Wに依存する問題ですからこれらを明らかにしなければ答えは出ません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

人気Q&Aランキング