• 締切済み

C言語で16進数文字列から16進数数値への変換

C言語で、16進数文字列を16進数に変換したいのですが解りません! 教えていただけないでしょうか?

みんなの回答

回答No.3

こんな感じかなぁ。 適当に「 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; }

eva2027
質問者

お礼

詳しく書いてくれて、本当に参考になりました! ありがとうございます!

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

strtolやstrtoulを使ってください。 浮動小数点数を扱うのであれば、strtodです。 あるいは、sscanfでもよいでしょう。 具体的には、 double x; sscanf("0x9.abcp10", "%la", &x); のようにします。

eva2027
質問者

お礼

わかりました!ありがとうございます とても参考になりました!!

回答No.1

>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; }

eva2027
質問者

お礼

細かく書いてくれてとても助かりました! 本当にありがとうございます!!

関連するQ&A