• ベストアンサー

数字を数値に変換

scanf()で数字(文字列)を入力し、それをdataという場所に16進数(数値)で格納したいのです。 例えば、 scanfで「3b」と入力したら、dataには、「0x3b」が格納されているようにしたいのですが、どのようにしたらいいのか教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • y_narumi
  • ベストアンサー率100% (2/2)
回答No.1

sprintf()関数でOKです。 data = sprintf("%0x",scanfで取得した変数名※1); で良いかと思います。 ※1scanfで取得した変数はchar型が前提です。 詳しくはC,VC++のprintf文等の書式にあります。

その他の回答 (4)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.5

scanf() でやるとしたら、こうなります。   int data;   scanf("%x", &data);

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.4

とりあえずstrという配列に文字列が入っているるとして。 dataがlongの場合: data = strtol(str, NULL, 16) ; dataがlongで無い場合はキャストしてください。 strtol()は便利な関数で、最後の引数に基数を指定できます。 16と書けばstrを16進文字列として変換します。 最後の引数には2~36までの数値を指定できます。 入力(=strの内容)が"0xab"のようなパターンの場合は最後の引数に0を指定すれば、いわゆる「C言語の10進16進8進表記」を認識して変換してくれます。 ホントは2番の引数もNULLじゃ無い方が良いのですが、エラー処理が必要ないみたいなので割愛します。

  • itohh
  • ベストアンサー率45% (210/459)
回答No.3

こんにちは。itohhといいます。 「0x3b」と4バイトの文字列で格納するのではなくて1バイトの16進数で格納したいのですね? 過去に2回ほど似たようなことにアドバイスしました。 そちらは、参考にならないですか? http://oshiete1.goo.ne.jp/kotaeru.php3?q=175147 http://oshiete1.goo.ne.jp/kotaeru.php3?q=214994

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=175147,http://oshiete1.goo.ne.jp/kotaeru.php3?q=214994
noname#25358
noname#25358
回答No.2

 変数 data の型はなんでしょうか?  int 型や long 型で宣言してある場合には、atoi 関数や atol 関数が使えます。

関連するQ&A