#include <stdio.h>
#define YES 1
#define NO 0
//定义实现转换功能的函数
int htoi(char hex[]);
int main(void) {
char hexnum[30];
printf("输入您要转换的十六进制数字:");
scanf("%s", hexnum);//将输入的十六进制数保存到字符数组里
printf("转换结果是:%d\n", htoi(hexnum));
}
//转换算法如下
int htoi(char hex[]) {
int i, inhex, hexdigit, n;
i = 0;
if (hex[i] == '0')//转换之前如有0X或0x等表明该数为十六进制数的前缀需进行跳过
++i;
if (hex[i] == 'x' || hex[i] == 'X')
++i;
n = 0;
inhex = YES;
for (; inhex == YES; i++) {
if (hex[i] >= '0' && hex[i] <= '9')
hexdigit = hex[i] - '0'; //将char类型转换为int类型并换算该数位数值大小
else if (hex[i] >= 'a' && hex[i] <= 'f')
hexdigit = hex[i] - 'a' + 10;
else if (hex[i] >= 'A' && hex[i] <= 'F')
hexdigit = hex[i] - 'A' + 10;
else
inhex = NO;
if (inhex == YES)
n = 16 * n + hexdigit; //累加计算
}
return n;
}
算法方案如上