#include<iostream>
#include<cmath>
using namespace std;
int atoi10(char* s)
{
int r = 0;
while(*s)
{
if(*s >= '0' && *s <= '9')
{
r = r*16 + *s - '0';
}
else if(*s >= 'a' && *s <= 'f')
{
r = r*16 + *s - 'a' + 10;
}
else if(*s >= 'A' && *s <= 'F')
{
r = r*16 + *s - 'A' + 10;
}
else
return -1;
s++;
}
return r;
}
int main()
{
char *test="100";
cout<<atoi10(test)<<endl;
system("PAUSE");
return 0;
}
一位网友的.
=================================================================================
#include<iostream>
#include<cmath>
using namespace std;
int atoi10(char *s)
{
int r=0,i=0,sigal;
char *p=s;
while(*p)p++;p--;
while(s<=p)
{
if(*p>='0'&&*p<='9')sigal=48;
else if(*p>='a'&&*p<='f')sigal=87;
else if(*p>='A'&&*p<='F')sigal=55;
else return -1;
r+=(*p-sigal)*pow(16.0,i);
i++,p--;
}
return r;
}
int main()
{
char *test="100";
cout<<atoi10(test)<<endl;
system("PAUSE");
return 0;
}
自己写的.郁闷.差很多呀.