寫一個函數,輸入一個十六進制數,輸出相應的十進制數
#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;
}