【C言語】10進数の数値と16進数の文字列を相互変換する方法

この記事では、C言語で10進数と16進数を相互変換する方法について解説します。

10進数から16進数への変換方法と、逆に16進数から10進数への変換方法を紹介します。

初心者の方でもわかりやすく、具体的なサンプルコードを交えて説明します。

目次から探す

10進数から16進数への変換方法

10進数から16進数への変換方法について説明します。

C言語では、10進数から16進数への変換には sprintf 関数を使用することができます。

この関数は、指定した書式に従って文字列を生成するために使用されます。

以下に、10進数から16進数への変換のサンプルコードを示します。


#include <stdio.h>
int main() {
    int decimal = 255;
    char hex[10];
    sprintf(hex, "%x", decimal);
    printf("16進数: %s\n", hex);
    return 0;
}

このコードでは、変数 decimal に10進数の値255を代入しています。

そして、 sprintf 関数を使用して、変数 decimal の値を16進数の文字列に変換し、変数 hex に格納しています。

最後に、 printf 関数を使用して、変換された16進数の文字列を表示しています。

実行結果は以下のようになります。

16進数: ff

このように、10進数の数値255は16進数の文字列”ff”に変換されます。

大文字にしたい場合は%x%Xにしてください。

以上が、10進数から16進数への変換方法の説明です。

16進数から10進数への変換方法

16進数から10進数への変換は、C言語の標準ライブラリであるstrtol関数を使用することで簡単に行うことができます。

strtol関数は、文字列を指定された基数(ここでは16進数)に基づいて整数に変換します。

以下にstrtol関数の基本的な使い方を示します。


#include <stdio.h>
#include <stdlib.h>
int main() {
    char hexString[] = "1A"; // 16進数の文字列
    char *endPtr; // strtol関数が変換した文字列の終端を示すポインタ
    long decimal = strtol(hexString, &endPtr, 16); // 16進数を10進数に変換
    printf("16進数: %s\n", hexString);
    printf("10進数: %ld\n", decimal);
    return 0;
}

上記のコードでは、hexStringという変数に16進数の文字列を格納しています。

strtol関数を使用して、hexStringを10進数に変換し、その結果をdecimalという変数に格納しています。

strtol関数の第1引数には変換する文字列を指定します。

第2引数には変換後の文字列の終端を示すポインタを指定し、第3引数には変換元の基数を指定します。

実行結果は以下のようになります。

16進数: 1A
10進数: 26

strtol関数は、変換に成功した場合には変換後の数値を返し、変換に失敗した場合には0を返します。

また、変換後の文字列の終端を示すポインタを第2引数で受け取ることができます。

以上が16進数から10進数への変換方法です。

strtol関数を使用することで、簡単に16進数を10進数に変換することができます。

目次から探す