みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

数字を数値に変換

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

投稿日時 - 2002-03-13 17:12:00

QNo.234502

すぐに回答ほしいです

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

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

投稿日時 - 2002-03-13 17:37:53

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

scanf() でやるとしたら、こうなります。

  int data;

  scanf("%x", &data);

投稿日時 - 2002-03-15 10:52:54

ANo.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じゃ無い方が良いのですが、エラー処理が必要ないみたいなので割愛します。

投稿日時 - 2002-03-14 08:54:58

ANo.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

投稿日時 - 2002-03-14 02:38:24

ANo.2

 変数 data の型はなんでしょうか?

 int 型や long 型で宣言してある場合には、atoi 関数や atol 関数が使えます。

投稿日時 - 2002-03-13 17:43:04

あなたにオススメの質問