-
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; }
-
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; }
-
自分で変換する方法:
#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進数に変換することができます。どの方法を選ぶかは、自身のコードや状況に応じて決めてください。