• 締切済み

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

  • Objective-C文字列からC言語文字列に変換したいのですが、どう

    Objective-C文字列からC言語文字列に変換したいのですが、どうすればよいでしょうか? C言語からObjective-cなら NSString *cToOc = [[NSString alloc] initWithCString:"結果" encoding:NSUTF8StringEncoding]; NSLog(@"%@", cToOc); でよいのですが、その逆が知りたいです。 あとこの cToOcは以下のように解放しないといけないのでしょうか? [cToOc release];

  • C言語で16進数のunicodeを文字に変換したい

    C言語初学です。よろしくお願いします。 16進表記のunicodeの文字列データ(もともとは漢字のデータ)があり、 それをもとの文字列として出力したいのですが、 C言語でどういうプログラムを書けば良いのか分からず困っています。 ============================================ 例えば、「0x6F22」というデータがあった場合、 それを文字列に変換して「漢」という字を出力したいのです。 (http://ja.wiktionary.org/wiki/漢) ============================================ C99やC++、PHP、Rubyなどでは、 ユニバーサルキャラクタ(?)というのを使って 一発で変換できるようなのですが、 今回は学習目的というのもあって、 なんとかC言語でできないかと思っています。 おおまかな話でも良いので、 なにか取っ掛かりになる情報のご教示お願い致します。

  • C言語で整数を文字列へ型変換

    C言語で整数を文字列へ型変換 int result[11]; const char *tmp; resultの中の11個の数字を 1,2,3,4,5,6,7,8,9,10,11 のような文字列にして、tmpへ代入したんですが、やり方が分かりません。 Cの初心者ですので、教えていただきたいです。

  • C言語で取得した文字列を、C++の文字列として取り扱いたいです。

    C言語で取得した文字列を、C++の文字列として取り扱いたいです。 皆さんこんにちは。 C言語で取得したchar型で定義された文字列を、 C++の「std::string」に渡したいと思っております。 どうすればかなうでしょうか? 具体的には次のような内容です。 ■C言語側 ---- char key1 = "deperture"; ---- ■C++側で「key1 = key2」としたいです。 ---- std::string key2 = key1; ---- C言語側で記述されている「key1」の値(deperture)を、 C++ソース内の「key2」に渡したいと思っています。 こうゆう場合、どんな方法をとれば適切でしょうか。 C言語側でのchar型の文字列の値を、 C++側の「std::string」型として C++のソースへ渡す方法が分からないです。 アドバイスいただけるとありがたいです。 簡単な例を頂けると更に大変ありがたいです。 以上どうぞ宜しくお願い致します。

  • 10進数を16進数に変換

    c言語で文字列に含まれる10進数部分を16進数に変換する方法を教えてください。  sdkk161h→sdkkA1h 161 →  A1

  • c言語の文字、また文字列について

    c言語の文字、つまり「'(シングルクオーテーション)」で囲んだ単数の半角文字は、メモリに保存されているのでしょうか。 また、アドレスは有るのでしょうか。 c言語の文字列、つまり「"(ダブルクオーテーション)」で囲んだ複数の文字は、メモリに保存されているのでしょうか。 また、アドレスは有るのでしょうか。

  • 文字列からint型数値への変換(C言語)

    2度目の質問になります。 現在おみくじプログラムを製作する上で、get methodによって入力フォームに入力された氏名:田中太郎が変換されたデータ「%C5%C4%C3%E6%C2%C0%CF%BA」のようなデータがnに。ラジオボタンにより男と選択された性別「man」という文字列がsに入っています。 これをint型の数値に変換したいのですが、どうやるのが一番適切な方法でしょうか? 先生には一度16進数にしてからそれをまた10進数へ~のように言われています。 ただ調べてもいい関数などが見つかりません。 まったく無知で申し訳ないのですが、よろしければご教授願います。 よろしくお願いします。 (前回質問した時に回答いただいた方法ではなく上記のような方法でやるように言われたため、以上のようなやり方をしています。前回ご回答いただいた方申し訳ないです・・・。)

    • ベストアンサー
    • CGI
  • 16進数の文字列を文章に変える

    プログラミングに関しては全く分からない者です。 先日、とある文字列が友人から送られてきました。 0から9までの数字とaからfのアルファベットで構成されているので、16進数の暗号なのかと検討をつけました。 ネットで「16進数 文字列 変換」などと検索して、変換ツールなどを試してみたのですが、うまく変換されません。 Excelあたりを使って、どうにか解読する方法はありませんか? また、そういった文字列というのは、プログラミング言語や文字コードによって、同じ文章でも変わってしまうものなのでしょうか? よろしくお願いします。

  • C言語で16進数の文字コードを文字列に変換

    16進の文字コードを入力してそれに対応する文字列を出力したいのですが 文字列から16進コードに変換出来ても16進コードから文字列に変換することが出来ません。 参考になるコードかサイト、または何かヒントがございましたらよろしくお願い致します。

  • C言語での文字列取得についてです。

     いつもお世話になっております。  例えば、"AAA=C:\aabbcc\ddd"のような文字列があります。C言語だと、この文字列の"C:\aabbcc\"部分だけ抜き出す方法がわかりません。  すいませんが、教えてください。  

専門家に質問してみよう