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

来源:互联网 发布:log4j 输出json格式 编辑:程序博客网 时间:2024/05/17 11:03
[cpp] view plaincopy
  1. /*整数转化成字符串*/  
  2. char *IntToStr(int num, char str[])  
  3. {  
  4.     int i = 0, j = 0;  
  5.     char temp[100];  
  6.     while(num)  
  7.     {  
  8.         temp[i] = num % 10 + '0';   //取模运算得到从后往前的每一个数字变成字符  
  9.         num = num / 10;  
  10.         i++;  
  11.     }  
  12.     temp[i] = 0;    //字符串结束标志  
  13.       
  14.     i = i - 1;     //回到temp最后一个有意义的数字  
  15.     while(i >= 0)  
  16.     {  
  17.         str[j] = temp[i];  
  18.         i--;  
  19.         j++;  
  20.     }  
  21.     str[j] = 0;   //字符串结束标志  
  22.     return str;  
  23. }  
  24.   
  25. /*字符串转换为整数,仅考虑十进制,不考虑非法字符*/  
  26. int StrToInt(char *str)  
  27. {  
  28.     int value = 0;  
  29.     int sign = 1;  
  30.     assert(str != NULL);  
  31.     if(*str == '-')  
  32.     {  
  33.         sign = -1;  
  34.         str++;  
  35.     }else if(*str == '+')  
  36.     {  
  37.         str++;  
  38.     }  
  39.     while(*str)  
  40.     {  
  41.         value = value * 10 +(*str - '0');  
  42.         str++;  
  43.       
  44.     }  
  45.     return sign * value;  
  46. }  
  47.   
  48. /*字符串转换整数,考虑16进制,10进制,8进制,不考虑其他非法字符*/  
  49. int StrToIntAll(char *str)  
  50. {  
  51.     int value = 0;  
  52.     int sign = 1;  
  53.     int radix;  
  54.   
  55.     assert(str != NULL);  
  56.     if(*str == '-')  
  57.     {  
  58.         sign = -1;  
  59.         str++;  
  60.     }  
  61.     else if(*str == '+')  
  62.     {  
  63.         str++;  
  64.     }  
  65.     //考虑不同的进制  
  66.     if(*str == '0' && (*(str+1) == 'X' || *(str+1) == 'x'))  
  67.     {  
  68.         radix = 16;  
  69.         str += 2;  
  70.     }else if(*str == '0')  
  71.     {  
  72.         radix = 8;  
  73.         str++;  
  74.     }else  
  75.     {  
  76.         radix = 10;  
  77.     }  
  78.   
  79.     while(*str)  
  80.     {  
  81.         if(radix == 16)  
  82.         {  
  83.             if(*str >= '0' && *str <= '9')  
  84.             {  
  85.                 value = value * radix + (*str - '0');  
  86.             }else  
  87.             {  
  88.                 value = value * radix +(*str - 'a' + 10);  
  89.             }  
  90.         }else  
  91.         {  
  92.             value = value * radix + (*str - '0');  
  93.         }  
  94.         str++;  
  95.     }  
  96.   
  97.     return sign * value;  
  98. }  
0 0