输入:
16进制格式:前缀有0x,例如0x1f
10进制格式:无前缀,例如12345
2进制格式:前缀有0,例如010010
不需要考虑正负数
输出:返回整型数字
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int StrToInt(char *Convert)
{
int i = 0;
int sum = 0;
if('0' == *Convert && ('x' == *(Convert + 1) || 'X' == *(Convert + 1)))
{
for(i = 2;i < strlen(Convert);++i)
{
if(*(Convert + i) >= 'A' && *(Convert + i) <= 'Z')
{
sum = sum * 16 + (*(Convert + i) - 'A' + 10);
}
else if(*(Convert + i) >= 'a' && *(Convert + i) <= 'z')
{
sum = sum * 16 + (*(Convert + i) - 'a' + 10);
}
else
{
sum = sum * 16 + (*(Convert + i) - '0') ;
}
}
}
else if('0' != *Convert )
{
for(i = 0;i < strlen(Convert);++i)
{
sum = sum * 10 + *(Convert + i) - '0';
}
}
else if('0' == *Convert)
{
int n = 1;
for(i = strlen(Convert) - 1;i >= 0;--i)
{
sum = sum + (*(Convert + i) - '0') * n;
n = n * 2;
}
}
return sum;
}
int main(int argc, const char *argv[])
{
char str[20] = {0};
while(1)
{
bzero(str,sizeof(str));
scanf("%s",str);
printf("%d\n",StrToInt(str));
}
return 0;
}