用c语言实现16进制的int型数值转化为10进制int型数值
时间: 2024-10-02 10:01:41 浏览: 38
在C语言中,将十六进制的int型数值转换为十进制的int型数值,可以通过直接初始化一个整数变量并利用C语言的内置功能完成。这个过程不需要复杂的算法,只需要明确十六进制每一位对应的基数(这里是16)并乘以该位的权重。
以下是一个简单的例子:
```c
#include <stdio.h>
#include <string.h>
int hexToInt(char hexStr[]) {
int decimalNum = 0;
int len = strlen(hexStr);
for (int i = 0; i < len; i++) {
if (hexStr[i] >= '0' && hexStr[i] <= '9') { // 0-9 are the decimal digits
decimalNum += hexStr[i] - '0' * pow(16, len - 1 - i); // multiply with 16 raised to the power of (length - i - 1)
} else if (hexStr[i] >= 'A' && hexStr[i] <= 'F') { // A-F are hexadecimal digits
decimalNum += (hexStr[i] - 'A' + 10) * pow(16, len - 1 - i);
} else if (hexStr[i] >= 'a' && hexStr[i] <= 'f') { // a-f are also hexadecimal digits
decimalNum += (hexStr[i] - 'a' + 10) * pow(16, len - 1 - i);
} else {
printf("Invalid character in hex string.\n");
return -1; // handle invalid characters
}
}
return decimalNum;
}
int main() {
char hexNum[] = "FF"; // example hex number
int decimal = hexToInt(hexNum);
printf("Decimal value is: %d\n", decimal);
return 0;
}
```
在这个示例中,函数`hexToInt`逐个处理输入的十六进制字符,并将其转换为相应的十进制值。注意,字母'A'到'F'(或'a'到'f')分别代表数字10到15。
阅读全文