本帖最后由 zhuotuzi 于 2019-12-4 23:49 编辑
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int Hex2Dec(char tem)
{
if((tem=='A')||(tem=='a')) return 10;
else if((tem=='B')||(tem=='b')) return 11;
else if((tem=='C')||(tem=='c')) return 12;
else if((tem=='D')||(tem=='d')) return 13;
else if((tem=='E')||(tem=='e')) return 14;
else if((tem=='F')||(tem=='f')) return 15;
else if((tem>='0')&&(tem<='9')) return tem-'0';
}
int AsciiHexToInt(char *p)
{
int val=0;
char tt;
unsigned char i = strlen(p);
printf("\n字符串长度=%d\n",i);
while(i>0)
{
tt=*p++;
val += (Hex2Dec(tt)*pow(16,(i-1)));
i--;
}
// val +=Hex2Dec(*(p++))*16^((i--)-1);
return val;
}
int main()
{
int i=0;
char str[16]={0};
char id[40];
while(1)
{
/*
printf("请输入一个10进制整数:");
scanf("%d",&i);
itoa(i,str,10);
printf("这个10进制整数是:%s\n",str);
itoa(i,str,16);
printf("这个16进制整数是:%s\n",str);
printf("----------------------------\n");
printf("请输入一个16进制整数:");
scanf("%x",&i);
itoa(i,str,16);
printf("这个16进制整数是:%s\n",str);
printf("这个数的十进制是:%d\n",i);
*/
printf("----------------------------\n");
printf("请输入一个16进制整数:");
scanf("%s",&id);
printf("\n输入的字符串是%s\n",id);
i=AsciiHexToInt(id);
printf("i=%d\n",i);
}
}
|