C语言16进制转换为10进制函数
时间: 2023-12-21 20:04:42 浏览: 24
以下是一个将C语言中的16进制字符串转换为10进制整数的函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int hexToDec(char* hexStr) {
int len = strlen(hexStr);
int dec = 0;
for(int i = 0; i < len; i++) {
char c = hexStr[i];
if(isdigit(c)) {
dec = dec * 16 + (c - '0');
} else {
c = toupper(c);
dec = dec * 16 + (c - 'A' + 10);
}
}
return dec;
}
```
这个函数通过遍历16进制字符串的每个字符,将其转换为10进制数。如果字符是数字,则直接将其转换为整数值,并将其乘以16的幂次方加到结果中。否则,字符是字母,则将其转换为十进制数(例如,A是10,B是11,等等),并将其乘以16的幂次方加到结果中。
注意,这个函数假设输入的16进制字符串是有效的,并且没有前导零。如果你需要处理无效的输入,你可以在函数中添加一些错误处理代码,例如检查字符串长度是否为零,检查字符是否在有效范围内,等等。
相关问题
c语言16进制转化为10进制
好的,以下是C语言的代码示例,用于将16进制字符串转换为10进制整数:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char hex_str[] = "2F"; // 要转换的16进制字符串
int dec_num = strtol(hex_str, NULL, 16); // 使用strtol函数将16进制字符串转换为10进制整数
printf("%d\n", dec_num); // 输出结果为47
return 0;
}
```
这段代码中,使用了C语言标准库中的strtol函数,将16进制字符串转换为10进制整数。其中,第一个参数是要转换的字符串,第二个参数为NULL表示不需要返回转换后的字符串末尾位置的指针,第三个参数16表示要转换的字符串是16进制格式的。最后将转换后的结果赋值给变量dec_num,并使用printf函数输出结果。
c语言16进制数组转10进制数组函数
以下是一个将C语言中的16进制数组转换为10进制数组的函数示例:
```c
void hex2dec(int *hexArray, int *decArray, int len) {
int i;
for (i = 0; i < len; i++) {
decArray[i] = (int) strtol(hexArray[i], NULL, 16);
}
}
```
其中,hexArray是输入的16进制数组,decArray是输出的10进制数组,len是数组的长度。函数使用了strtol()函数将16进制字符串转换为10进制整数。