• ベストアンサー

数字を数値に変換

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

  • エクセルで半角数字には数値と文字列がある?

    http://okwave.jp/qa/q6473596.html の質問を見て私も納得がいかず質問させていただきます。 たとえば、A1セルの書式を文字列に設定してから半角で数字を打ち込むと数字は数値でなく文字列としてセルに入ります。 この入力後、A1セルの書式を標準や数値に直してもそのセルの中の数字は左に寄ったままで文字列のままでいるようです。 (でもこれをセルの中でエンターキーを押したりすると数値になってしまいますが) 次にB1セルの書式を標準あるいは数値にして数字を打ち込むと、当然のことですが数字は数値としてセルに入ります。 この入力後、B1セルの書式を文字列に変えると数字は左に寄りますから一見文字列になったように見えます。 ところが上記のセルとこのセルをA1=B1で試してみるとFALSEが返ります。 逆に同じ数字を数値として打ち込んだセルと=で試すとTRUEが返ります。 これはA1とB1は同じ文字列としての数字ではないという証拠だと思います。 B1セルの書式を標準に戻すとまた数字は右よりにもどりますから、セルの中の数字は数値のままのようです。 つまり、半角の数字にはセルの書式にかかわらず文字列と数値の二つがあるということなのでしょうか? だとしたらこの二つはどうやって区別すればいいのでしょうか?

  • VC++で文字列を数値に変換する方法

    VC++にて、button1をクリックしたら、textBox1に入力された数字の文字列(10進数)を数値に変換して、x等の変数に16進数で格納したく。 下の { } の部分にどのように書けばいいのでしょうか?  初心者につき、できるだけ噛み砕いて、説明を加えて、回答お願いします。 また、textBox1に数字以外が入力されたら、エラー検出が可能であれば、その方法も教えて下さい。 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { }

  • charを使わずに4桁の数字以外を入力したらエラーを表示したいです

    http://oshiete1.goo.ne.jp/qa4515709.html 上記の質問の続きとなります。 C言語で4桁の数字を入力させ、4桁の数字以外が入力されたらエラーを表示し、 4桁の数字が入力されたら、各位の数についていくつかの計算を行いたいです。 回答者の方のアドバイスから、文字列として入力し、字数をstrlenで、各桁の数をisdigitで判別するという方法を教えていただき、 4桁の数字以外が入力されたらエラーを表示することはできましたが、そうすると今度は計算がうまくいかなくなってしまいました。 例えば文字列としてscanf("%s",a);のようにして「1234」という文字列を入力し、これを「1234」という数値として扱うことはできませんか? または、strlen,isdigitを使わずに数値が4桁の整数であるかどうかを判別することはできませんか? もし良い方法をご存知の方いましたら、解説をお願いします。

  • エクセル 文字列で入力した数字を数値にする

    エクセルで、文字列の設定で入力した数字は、[セルの書式設定]で、数値として設定しても、文字列のままになります。 (セルの左上に、文字列と分かる緑の三角が付いたままになり、表を作ってもグラフの表示は出来ません。) 数値として数字を入力をした後、[セルの書式設定]で文字列にして、再び[セルの書式設定]で数値にすると、数値にはなります。 (この場合、文字列にしても、セルの左上に緑の三角が付かず、このまま表を作ると数値(小数点以下が0の場合は小数点以下が削除されます。)の扱いとなりグラフの表示が出来ます。) 文字列で入力した数字は、数値にはならないのでしょうか? よろしくお願いいたします。

  • 文字列から数値への変換

    エクセルで文字列として入力されている"1"といったデータを数値の"1"へ置き換える方法があれば教えてください。

  • エクセル 数値だけ抽出するには?

    エクセルで、文字列+スペース+数字と入力されているセルから数値だけ取り出す方法を教えていただけますか? 文字列とスペースの字数は一定で、数値の桁数は6-8桁と変動します。 A列からb列のように変換したいのです。 A列          B列 PMID:_12345678    12345678 PMID:_123456     123456 宜しくお願いいたします。

  • UNIXで数字の文字列を、数値に変換するには?

    UNIXで、数字のみの文字列を、その文字列で表される数値に変換して変数に代入したいのですが、どうすればいいでしょうか? つまり、 VALUE=`echo 22j4444j33 | awk -F'j' '{print $1}'` <VALUEに入った"22"を22の数値に変換> exit $VALUE というようなことがしたいです。 よろしくお願いします。

  • ポインタを使用 [数字列を数値に変換]

    カンマ(,)区切りの数字列を ポインタを使って 数値に変換したいのですが、わかりません。 教えてください。お願いします。 char data[]="5436,434";

  • Excel で 文字→数字変換

    エクセルで文字→数字変換を行いたいのですが、 どのようにすればよいでしょうか? (やりたい例) あるセルの特定文字列位置の文字を数字に変換したい。 文字列先頭から4番目の文字を元に数値に変換する。 Aだと1と変換、Bだと2と変換、Cだと3と変換… A1:xxxBxxxx B1:2 うまく質問が表現できなくてすいません。 実現方法はVBAでも結構です(使ったことはありませんが)。

  • 文字列が数値に変換されない

    文字列の数字をVALUE関数で数値に変換したくても数値になりません。 ♯N/Aと表示されるだけです。 関数を入れたあとに表示形式を数値にしても変わりません。 元の文字列はVLOOKUP関数で検索した数字です。 これができないと仕事が進みません。急いでます。お願いします。

専門家に質問してみよう