用C语言写一个将16进制的数据转换为10进制数据的函数
时间: 2023-03-07 13:36:53 浏览: 168
可以用以下函数来实现:int hextodec(char *hex) { int len = strlen(hex); int base = 1; int dec_val = 0; for (int i=len-1; i>=0; i--) { // 判断是否为16进制字符 if (hex[i]>='0' && hex[i]<='9') { dec_val += (hex[i] - 48)*base; //字符'0'的ASCII值为48 base = base * 16; } else if (hex[i]>='A' && hex[i]<='F') { dec_val += (hex[i] - 55)*base; //字符'A'的ASCII值为55 base = base * 16; } } return dec_val;
}
相关问题
用C语言写一个16进制数据转换成10进制数据的函数
可以使用以下C语言函数来实现16进制数据转换成10进制数据:long int htoi (const char s[]) { int i; long int n = 0; if (s[0] == '0' && (s[1]=='x' || s[1]=='X')) { i = 2; } else { i = 0; } for (; (s[i] >= '0' && s[i] <= '9') || (s[i] >= 'a' && s[i] <= 'f') || (s[i] >='A' && s[i] <= 'F');++i) { if (tolower(s[i]) > '9') { n = 16 * n + (10 + tolower(s[i]) - 'a'); } else { n = 16 * n + (tolower(s[i]) - '0'); } } return n; }
用C语言写一个函数,可以将16进制数转换为10进制数
好的,这是一个可以将16进制数转换为10进制数的C语言函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int hexToDec(char* hex) {
int len = strlen(hex);
int dec = 0;
for (int i = 0; i < len; i++) {
int digit = hex[i];
if (digit >= '0' && digit <= '9') {
digit -= '0';
} else if (digit >= 'a' && digit <= 'f') {
digit -= 'a' - 10;
} else if (digit >= 'A' && digit <= 'F') {
digit -= 'A' - 10;
} else {
return -1; // 非法输入
}
dec = dec * 16 + digit;
}
return dec;
}
int main() {
char* hex = "1A";
int dec = hexToDec(hex);
printf("%s in hex is %d in decimal.\n", hex, dec);
return 0;
}
```
在这个例子中,我们将16进制数字符串作为函数的参数,然后使用循环和逻辑来将其转换为10进制数。该函数将16进制数转换为整数并返回结果。在主函数中,我们演示如何使用该函数来将“1A”转换为26的十进制数。