プロが教える店舗&オフィスのセキュリティ対策術

半角カナ文字を16進表記すると、ffが交じってしまいます。

ファイル
printf("%02x",moji[i]);

ffffffccffffffa7ffffffb2ffffffd9

何故ffとついてしまうのでしょうか?

逆に16進表記から文字に直す時にこのffが邪魔して
化けてしまいますが、何が問題なのでしょうか?

A 回答 (2件)

mojiの型がcharなのでは?


mojiをunsigned charで宣言するか、
printf("%02x",(unsigned char)moji[i]);
だと、どうでしょうか?
    • good
    • 0

signed charなのでintに変換されるときに負号も引き継がれるのでそうなります


char の 0xcc = -52
int の -52 = ffffffcc

printf("%02x", (unsigned char)moji[i]);
    • good
    • 1
この回答へのお礼

とてもわかりやすい説明ありがとうございます。
おふたかたとも、感謝です。

お礼日時:2008/10/22 10:16

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