/*整數轉化成字符串*/
char *IntToStr(int num, char str[])
{
int i = 0, j = 0;
char temp[100];
while(num)
{
temp[i] = num % 10 + '0'; //取模運算得到從後往前的每一個數字變成字符
num = num / 10;
i++;
}
temp[i] = 0; //字符串結束標誌
i = i - 1; //回到temp最後一個有意義的數字
while(i >= 0)
{
str[j] = temp[i];
i--;
j++;
}
str[j] = 0; //字符串結束標誌
return str;
}
/*字符串轉換爲整數,僅考慮十進制,不考慮非法字符*/
int StrToInt(char *str)
{
int value = 0;
int sign = 1;
assert(str != NULL);
if(*str == '-')
{
sign = -1;
str++;
}else if(*str == '+')
{
str++;
}
while(*str)
{
value = value * 10 +(*str - '0');
str++;
}
return sign * value;
}
/*字符串轉換整數,考慮16進制,10進制,8進制,不考慮其他非法字符*/
int StrToIntAll(char *str)
{
int value = 0;
int sign = 1;
int radix;
assert(str != NULL);
if(*str == '-')
{
sign = -1;
str++;
}
else if(*str == '+')
{
str++;
}
//考慮不同的進制
if(*str == '0' && (*(str+1) == 'X' || *(str+1) == 'x'))
{
radix = 16;
str += 2;
}else if(*str == '0')
{
radix = 8;
str++;
}else
{
radix = 10;
}
while(*str)
{
if(radix == 16)
{
if(*str >= '0' && *str <= '9')
{
value = value * radix + (*str - '0');
}else
{
value = value * radix +(*str - 'a' + 10);
}
}else
{
value = value * radix + (*str - '0');
}
str++;
}
return sign * value;
}
轉自:http://blog.csdn.net/yuliu0552/article/details/6649312#