C言語での10進数と16進数の変換
10進数を16進数に変換する
C言語では、10進数を16進数に変換する方法はいくつかあります。
printfを使う方法
printf関数を使うと簡単に変換できます。
#include <stdio.h>
int main() {
int decimal = 255;
printf("10進数: %d, 16進数: %X\n", decimal, decimal);
return 0;
}
このプログラムを実行すると、以下のように出力されます。
10進数: 255, 16進数: FF
16進数を10進数に変換する
16進数を10進数に変換するには、Cの整数リテラルを利用できます。
#include <stdio.h>
int main() {
int hexValue = 0xFF;
printf("16進数: 0x%X, 10進数: %d\n", hexValue, hexValue);
return 0;
}
このプログラムを実行すると、以下のように出力されます。
16進数: 0xFF, 10進数: 255
sprintfを使った変換
数値を文字列として扱いたい場合、sprintf関数が便利です。
#include <stdio.h>
int main() {
int decimal = 255;
char hexStr[10];
sprintf(hexStr, "%X", decimal);
printf("16進数表記: %s\n", hexStr);
return 0;
}
出力:
16進数表記: FF
手動で変換を行う方法
ループを使って、10進数を16進数に変換する方法もあります。
#include <stdio.h>
void decimalToHex(int decimal) {
char hex[20];
int i = 0;
while (decimal != 0) {
int remainder = decimal % 16;
hex[i++] = (remainder < 10) ? remainder + '0' : remainder - 10 + 'A';
decimal /= 16;
}
printf("16進数: ");
for (int j = i - 1; j >= 0; j--) {
putchar(hex[j]);
}
printf("\n");
}
int main() {
int num = 255;
decimalToHex(num);
return 0;
}
16進数を文字列に変換する
16進数を文字列として扱いたい場合、sprintfを利用できます。
#include <stdio.h>
int main() {
int hexValue = 0x1A3F;
char str[10];
sprintf(str, "%X", hexValue);
printf("文字列の16進数: %s\n", str);
return 0;
}
文字列を16進数に変換する
ユーザーが入力した16進数の文字列を数値に変換する場合、sscanf関数を使用できます。
#include <stdio.h>
int main() {
char hexStr[] = "1A3F";
int value;
sscanf(hexStr, "%X", &value);
printf("変換後の10進数: %d\n", value);
return 0;
}
出力:
変換後の10進数: 6719