整數轉化成字符串; 字符串轉換爲整數

/*整數轉化成字符串*/
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#
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章