用C语言写一个16进制数据转换成10进制数据的函数
时间: 2023-03-07 17:36:54 浏览: 105
可以使用以下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 <string.h>
#include <math.h>
int hexToDec(char hex[]) {
int len = strlen(hex);
int base = 1;
int dec = 0;
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
dec += (hex[i] - 48) * base;
base = base * 16;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec += (hex[i] - 55) * base;
base = base * 16;
}
}
return dec;
}
int main() {
char hex[] = "1F";
int dec = hexToDec(hex);
printf("%s in hex = %d in dec\n", hex, dec);
return 0;
}
```
该函数将接收一个16进制数作为输入,然后将其转换为10进制数并返回。函数使用一个循环来遍历16进制数中的每个数字,并根据数字的类型将其转换为10进制数。在函数中调用了C语言的字符串函数,因此需要包含`<string.h>`头文件。
用c语言写一个16进制转为10进制的函数
好的,下面是用c语言写一个16进制转为10进制的函数的示例代码:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int hex2dec(char hex[]) {
int len = strlen(hex);
int dec = 0;
int base = 1;
for (int i = len - 1; i >= 0; i--) {
int digit;
if (hex[i] >= '0' && hex[i] <= '9') {
digit = hex[i] - '0';
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
digit = hex[i] - 'a' + 10;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
digit = hex[i] - 'A' + 10;
} else {
return -1; // invalid hex string
}
dec += digit * base;
base *= 16;
}
return dec;
}
int main() {
char hex[] = "1a";
int dec = hex2dec(hex);
printf("%s in hex = %d in dec\n", hex, dec);
return 0;
}
```
函数`hex2dec`的功能是将一个16进制字符串转换为相应的10进制整数。它采用从左到右扫描输入字符串的方式,并将每个字符转换为相应的数值。在循环过程中,我们使用一个`base`变量来表示当前位数的权值,起始值为1。每处理一位,将其对应数值乘以权值,并将结果累加到`dec`变量中。最后,函数返回转换后的10进制整数。
在main函数中,我们先定义了一个输入16进制字符串`"1a"`,然后调用`hex2dec`函数将其转换为10进制整数,并将结果打印到控制台上。
希望这个例子可以帮你解决问题!