【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19156

16進文字列を10進数にして取り込む方法
投稿者---のぶこ(2005/01/13 13:27:37)


16進文字列を10進数にして取り込む方法は
どのようにすればいいのでしょうか?

例えば、"000A"という16進表記の文字列を、
実数型変数に10.0として格納したいのです。

どうぞよろしくお願いします。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:16進文字列を10進数にして取り込む方法 19157 nop 2005/01/13 13:39:36


No.19157

Re:16進文字列を10進数にして取り込む方法
投稿者---nop(2005/01/13 13:39:36)


>例えば、"000A"という16進表記の文字列を、
>実数型変数に10.0として格納したいのです。

sscanf()、strtol() で整数に変換し、
整数を浮動小数点数にキャスト。


この投稿にコメントする

削除パスワード

No.19159

Re:16進文字列を10進数にして取り込む方法
投稿者---のぶこ(2005/01/13 14:32:08)


>>例えば、"000A"という16進表記の文字列を、
>>実数型変数に10.0として格納したいのです。
>
>sscanf()、strtol() で整数に変換し、
>整数を浮動小数点数にキャスト。

nop様ありがとうございます。

double doubleaaa;
char *string;

string="000A";

doubleaaa=sscanf(string,"%f");
printf("doubleaaa=%f\n",doubleaaa);

このようにコーディングしたのですが、
結果は 1.0 になってしまいます。


この投稿にコメントする

削除パスワード

No.19160

Re:16進文字列を10進数にして取り込む方法
投稿者---nop(2005/01/13 14:49:09)


>>sscanf()、strtol() で整数に変換し、
> doubleaaa=sscanf(string,"%f");

「整数に」と書いてあるのに、
何故、いきなり浮動小数点数の書式を使うのですか?

16 進数を変換したいのであれば、
sscanf() の書式は「%X」で、これは整数型の書式です。

なので、「整数で」と書いたのに、
何故、無視するのですか?


この投稿にコメントする

削除パスワード

No.19162

Re:16進文字列を10進数にして取り込む方法
投稿者---Blue(2005/01/13 14:59:57)


> doubleaaa=sscanf(string,"%f");
sscanfの戻り値は"正しく変換されて値の書き込みが行われたフィールドの数"です。(MSDNより)

    const char* string = "00A";
    double dHex = strtol( string, NULL, 16 );

で dHexに10.0を設定できるはずです。(strtolの使い方は調べてください)


この投稿にコメントする

削除パスワード

No.19165

Re:16進文字列を10進数にして取り込む方法
投稿者---のぶこ(2005/01/13 15:45:15)


できました。
どうもありがとうございました。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧