C言語での16進数から10進数への変換方法


  1. strtol関数を使用する方法:

    #include <stdio.h>
    #include <stdlib.h>
    int main() {
    char hex[] = "A1B"; // 変換したい16進数
    char *endptr;
    long decimal = strtol(hex, &endptr, 16);
    
    if (*endptr != '\0') {
        printf("16進数の変換に失敗しました。\n");
    } else {
        printf("変換結果: %ld\n", decimal);
    }
    
    return 0;
    }
  2. sscanf関数を使用する方法:

    #include <stdio.h>
    int main() {
    char hex[] = "A1B"; // 変換したい16進数
    int decimal;
    
    if (sscanf(hex, "%x", &decimal) != 1) {
        printf("16進数の変換に失敗しました。\n");
    } else {
        printf("変換結果: %d\n", decimal);
    }
    
    return 0;
    }
  3. 自分で変換する方法:

    #include <stdio.h>
    int main() {
    char hex[] = "A1B"; // 変換したい16進数
    int decimal = 0;
    int base = 1;
    int i;
    
    for (i = strlen(hex) - 1; i >= 0; i--) {
        if (hex[i] >= '0' && hex[i] <= '9') {
            decimal += (hex[i] - '0') * base;
        } else if (hex[i] >= 'A' && hex[i] <= 'F') {
            decimal += (hex[i] - 'A' + 10) * base;
        } else if (hex[i] >= 'a' && hex[i] <= 'f') {
            decimal += (hex[i] - 'a' + 10) * base;
        } else {
            printf("16進数の変換に失敗しました。\n");
            return 0;
        }
    
        base *= 16;
    }
    
    printf("変換結果: %d\n", decimal);
    
    return 0;
    }

これらの方法を使用することで、C言語で16進数を10進数に変換することができます。どの方法を選ぶかは、自身のコードや状況に応じて決めてください。