実現したいこと
C言語標準に文字から16進への変換関数が存在するかを知りたい
前提
C言語標準に16進文字の判定isxdigit
や、16進文字列から数値への変換strtol
, sscanf
等がありますが、下記のよう16進文字から数値への変換を行う関数は存在しますか。
C
1int toxdigit(int c) { 2 3 return '0' <= c && c <= '9'? c - '0': 4 'a' <= c && c <= 'f'? c - 'a' + 10: 5 'A' <= c && c <= 'F'? c - 'A' + 10: 0; 6} 7
補足情報(FW/ツールのバージョンなど)
g++ 10.2.1 (Debian 10.2.1-6)
ところで、その toxdigit 関数の中身なのですが、最後の false term がありません。
'A' <= c && c <= 'F'? c - 'A' + 10 : c;
とでもしておくとよいかと。
お書きのコードは、「文字から16進への変換関数」じゃなくて「16進数文字から数値への変換関数」ですね。
まさか int の中身が 16 進数だったり 10 進数だったりで異なるモノとお考えでしょうか。
> 最後の false term がありません。
> 「文字から16進への変換関数」じゃなくて「16進数文字から数値への変換関数」ですね。
ありがとうございます、修正しました。
> int の中身が 16 進数だったり 10 進数だったりで異なるモノとお考えでしょうか。
数値型の内部表現はすべて2進数ですね。16進文字から数値でした、すみません

回答3件
あなたの回答
tips
プレビュー