c语言十六进制转十进制函数怎么写
时间: 2023-08-08 12:08:56 浏览: 103
下面是一个将十六进制字符串转换为十进制整数的函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int hex_to_dec(char *hex)
{
int len = strlen(hex);
int dec = 0;
int base = 1;
for (int i = len - 1; i >= 0; i--)
{
if (isdigit(hex[i]))
{
dec += (hex[i] - '0') * base;
}
else if (isxdigit(hex[i]))
{
dec += (toupper(hex[i]) - 'A' + 10) * base;
}
base *= 16;
}
return dec;
}
int main()
{
char hex[] = "1A";
int dec = hex_to_dec(hex);
printf("%s in hex = %d in decimal\n", hex, dec);
return 0;
}
```
这个函数首先计算十六进制字符串长度,然后从字符串的末尾开始遍历,逐个字符转换为对应的十进制数并相加。当字符是数字时,直接将其转换为对应的十进制数;当字符是字母时,将其转换为对应的十进制数(A~F 分别对应 10~15)。最后,将所有转换后的数相加即可得到十进制整数。
在上面的示例中,我们将字符串 "1A" 转换为十进制整数 26。
阅读全文