- /*整数转化成字符串*/
- 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;
- }