この記事では、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”に変換されます。
以上が、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進数に変換することができます。