- 締切済み
C言語で16進数文字列から16進数数値への変換
C言語で、16進数文字列を16進数に変換したいのですが解りません! 教えていただけないでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
こんな感じかなぁ。 適当に「 ff 」とか、 \n の「 0d 」とか、「abcd 」などの16進文字列を入力してみてください。 #include <stdio.h> int main(void) { int i; char buff[16]; printf("16進文字列を入力して下さい:"); scanf("%s",buff); /* 型変換 */ sscanf(buff, "%x", &i); /* 結果の出力(内部は16進、わかり易く整数表示) */ printf("Input \"%s\" = %.2x(%d)\n", buff, i, i); /* ついでに使用ローカル変数のアドレス */ printf("Address i= %x, buff[]= %x\n",&i, buff); return 0; }
- jacta
- ベストアンサー率26% (845/3158)
strtolやstrtoulを使ってください。 浮動小数点数を扱うのであれば、strtodです。 あるいは、sscanfでもよいでしょう。 具体的には、 double x; sscanf("0x9.abcp10", "%la", &x); のようにします。
お礼
わかりました!ありがとうございます とても参考になりました!!
- bluecampus
- ベストアンサー率66% (138/209)
>16進数に変換 とは? 数値であれば16進も何もないですけど。 (16進数とか8進数とか10進数は数値の表わし方であって値ではどれも同じ。) #include <stdlib.h> #include <stdio.h> int main() { const char* p = "fe"; long n = strtol(p, NULL, 16); printf("%x\n", n); return 0; }
お礼
細かく書いてくれてとても助かりました! 本当にありがとうございます!!
お礼
詳しく書いてくれて、本当に参考になりました! ありがとうございます!