写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。例如1:输入:0xA输出:10例如2:输入:0xB1输出:177
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
/*
功能:
输入:
输出:
返回:成功返回0,其它-1;
*/
int favorite(int n)
{
int i;
long total = 1;
if(n >= 1)
{
for(i=0 ; i<n; i++)
{
total *= 16;
}
}
return total;
}
int hex2num(char ch)
{
int value = 0;
if(ch >= '0' && ch < '9')
{
value = ch -48;
}
if(ch >= 'A' && ch<= 'F')
{
value = ch - 65 + 10;
}
if(ch >= 'a' && ch<= 'f')
{
value = ch - 97 + 10;
}
return value;
}
int GetValue( char* strInValue,char* strOutValue )
{
char* p = strInValue;
if(*p != '0' || *(p+1) != 'X')
return -1;
p+=2;
char hex[9];
char str[9];
int cnt=0,i=0;
int sum=0;
while(*p != '\0')
{
hex[cnt++] = *p;
p++;
}
hex[cnt] = '\0';
for(i=0;i<cnt;i++)
{
str[i] = hex[cnt-1-i];
}
str[cnt] = '\0';
for(i = 0; i < cnt; i++)
{
sum += favorite(i)*hex2num(str[i]);
}
itoa(sum, strOutValue, 10);
return 0;
}