写一个函数,输入一个十六进制数,输出相应的十进制数
#include <iostream>
int HexTolnt(const char *str)
{
assert(str!=NULL);
int tmp = 0;
char ch;
if(str[0]!='0'||(str[1]!='x'&&str[1]!='X'))
return -1;
str+=2;//跳过0x
while(isxdigit(*str))//'1'->1:*str-'0' 'a'-'0'不等于10
{
if(isdigit(*str))
{
tmp = tmp*16 + *str-'0';
}
else//字母 0xAb
{
ch = *str;
if(isupper(*str))
{
ch = tolower(*str);
}
tmp = tmp*16+ch-'a'+10;//将小写字母转成对应的十六进制数字
}
str++;
}
return tmp;
}
int main()
{
printf("%x\n",HexTolnt("0x1234ab"));
return 0;
}
将"0x1234ab"由十六进制转成十进制,输出结果为"1234ab"
源代码如下:
#include
int HexTolnt(const char *str)
{
assert(str!=NULL);
int tmp = 0;
char ch;
if(str[0]!=‘0’||(str[1]!=‘x’&&str[1]!=‘X’))
return -1;
str+=2;//跳过0x
while(isxdigit(*str))//‘1’->1:*str-‘0’ ‘a’-'0’不等于10
{
if(isdigit(str))
{
tmp = tmp16 + *str-‘0’;
}
else//字母 0xAb
{
ch = *str;
if(isupper(*str))
{
ch = tolower(str);
}
tmp = tmp16+ch-‘a’+10;//将小写字母转成对应的十六进制数字
}
str++;
}
return tmp;
}
int main()
{
printf("%x\n",HexTolnt(“0x1234ab”));
return 0;
}