dポイントプレゼントキャンペーン実施中!

C言語にて関数などを使わずに計算式なので文字を16進数に変換したいのですがどのような処理にしたらいいでしょうか??
char型で用意した変数に1文字を格納し、それをアスキーコードの16進数に変換したいです。
よろしくお願いします。

A 回答 (3件)

ANo1さん、ANo2さんと基本同じです。

ビット操作で実行する方法もあるという参考まで。


static char tbl[ 16 ] = { '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

void to_hex( char c, char *str )
{
str[ 0 ] = tbl[ ( unsigned char )c >> 4 ]; // n / 16 と同じ (注意)
str[ 1 ] = tbl[ ( unsigned char )c & 0x0f ]; // n % 16 と同じ
str[ 2 ] = '\0';
}

注意: unsigned char にキャストしないと、符号ビットが残るので
期待した結果にならない。
    • good
    • 1

★おまけ。


・char型の1文字は、8ビットです。
 それをアスキーコードの16進数表記に変換数には、
 『n / 16』が上位4ビット、
 『n % 16』が下位4ビットとなります。
・上位/下位に分けれたらば、回答者 No.1 さんのアドバイスどおりに 0 ~ 15 の整数を
 '0'~'9'、'A'~'F'という1文字で出力すれば良い。
・'0'~'9'、'A'~'F'という1文字はchar型の配列テーブルにでも持っておけば『配列』を
 参照するだけで1文字に変換できます。
・以上。
    • good
    • 0

0~15 を '0'~'F' に対応付ける処理を n/16 と n%16 に対して施せばいい。

    • good
    • 0

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