c语言 16进制数转换成10进制数
时间: 2024-10-01 16:12:31 浏览: 139
C语言数字ASCII转换成16进制互转.c
5星 · 资源好评率100%
在C语言中,将16进制数转换为10进制数可以使用内建函数`atoi()`或者手动通过循环逐位相加的方式来实现。以下是两种方法:
**使用 atoi() 函数:**
```c
#include <stdio.h>
#include <string.h>
int main() {
char hex_string[50]; // 假设输入的16进制字符串不超过48字符(因为A对应10)
printf("Enter a hexadecimal number: ");
fgets(hex_string, sizeof(hex_string), stdin);
// 去掉换行符
hex_string[strlen(hex_string) - 1] = '\0';
int decimal_value = atoi(hex_string);
printf("Decimal value: %d\n", decimal_value);
return 0;
}
```
**手动转换:**
```c
#include <stdio.h>
#include <math.h>
void hex_to_decimal(char hex[], int base, int *decimal) {
long result = 0;
int i = 0;
while (hex[i]) {
if (hex[i] >= '0' && hex[i] <= '9') {
result *= base;
result += hex[i] - '0';
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
result *= base;
result += hex[i] - 'a' + 10; // A-F相当于10-15
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
result *= base;
result += hex[i] - 'A' + 10; // A-F相当于10-15
}
i++;
}
*decimal = result;
}
int main() {
char hex_string[] = "FF"; // 示例16进制数
int decimal_result;
hex_to_decimal(hex_string, 16, &decimal_result);
printf("Decimal value: %d\n", decimal_result);
return 0;
}
```
在这个例子中,我们处理了小写字母和大写字母的情况。
阅读全文