プロが教えるわが家の防犯対策術!

C言語で、16進数文字列を16進数に変換したいのですが解りません!
教えていただけないでしょうか?

A 回答 (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;
}
    • good
    • 6
この回答へのお礼

詳しく書いてくれて、本当に参考になりました!
ありがとうございます!

お礼日時:2010/01/31 19:41

strtolやstrtoulを使ってください。



浮動小数点数を扱うのであれば、strtodです。
あるいは、sscanfでもよいでしょう。
具体的には、

double x;
sscanf("0x9.abcp10", "%la", &x);

のようにします。
    • good
    • 3
この回答へのお礼

わかりました!ありがとうございます
とても参考になりました!!

お礼日時:2010/01/31 19:40

>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;
}
    • good
    • 1
この回答へのお礼

細かく書いてくれてとても助かりました!
本当にありがとうございます!!

お礼日時:2010/01/31 19:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています