「教えて!ピックアップ」リリース!

16進数を10進数に簡単に変換する関数は何かありますか?
もしご存知でしたら教えていただけないでしょうか?

例えば、3BDF8という16進数を10進数に変換したいと思っています。

A 回答 (3件)

C言語のプログラム内では、保持している数値にn進数という概念はなく


文字列化するときに初めて考えるものです。

int n; // <- このnは何進数でもない

ご質問を以下のように解釈してサンプルを書いてみました。

例えば、3BDF8という16進数(の文字列)を10進数(の文字列)に変換したいと思っています。


$ cat test.c
#include <stdio.h>

int main(int argc, char *argv[])
{
int num;
sscanf(argv[1], "%x", &num);
printf("%d\n", num);
}

$ ./a.out 3BDF8
245240

いかがでしょうか。
    • good
    • 4
この回答へのお礼

ありがといございます。

お礼日時:2011/05/02 11:52

16進数は、どのような形で与えますか?


int num = 0x3BDF8; のように?あるいは、
char chr[] = "3BDF8"; のように?

前者ならば、特に変換は必要ないですね。
後者ならば、標準関数の strtol() あたりが使えるかもしれません。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2011/05/02 11:53

16進文字列を数値化するにはstrtol関数を使います。


strtolは基数を指定できるので,2進文字列~36進文字列までどの基数の文字列でも使えます。


数値を10進文字列にするのには,sprintf関数を使います。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2011/05/02 11:53

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

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


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング