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

本文介绍了如何将整数转化为字符串以及如何将字符串转换为整数的方法。包括基本的十进制转换,以及考虑不同进制(如十六进制、八进制)的字符串到整数的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[cpp]  view plain copy
  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. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值