C言語での10進数と16進数の変換

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です