您的位置:首页 > 其它

整数转化成字符串; 字符串转换为整数

2015-11-28 17:47 471 查看
整数转化成字符串; 字符串转换为整数
/*整数转化成字符串*/
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: