zoukankan      html  css  js  c++  java
  • 整数装换为字符串intToArray与字符串转为整数 arrayToInt实现

    7.  整数装换为字符串itoa的实现

     1 char *intToArray(int number, char *str)
     2 {
     3     if(str == NULL)
     4     {
     5         return NULL;
     6     }
     7     char *ret = str;
     8     char *left = str;
     9     char temp = '';
    10     // 负数的处理
    11     if(number < 0)
    12     {
    13         number = -number;
    14         *ret++ = '-';
    15         left++;
    16     }
    17     // 辗转对10求余法 分离各个位的数字
    18     while (number > 0)
    19     {
    20         *ret++ = number%10 + '0'; // 将数字转化为ascall码
    21         number = number/10;
    22     }
    23     *ret = '';
    24     ret--;
    25     
    26     /* 逆序 */
    27     while (ret > left)
    28     {
    29         temp = *left;
    30         *left++ = *ret;
    31         *ret-- = temp;
    32     }
    33     return str;
    34 }

    字符串转为整数 arrayToInt

    需考虑字符串是负数、是否包含字母,及转换后的数字是否溢出等情况,包含字母的处理 -123asd455 则为-123,asd122作为0处理。

     1 int arrayToInt(char *str)
     2 {
     3     
     4     /* 思路: 逐一遍历字符串 为空 或者 为字符就结束遍历 取出的字符逐一*10*/
     5     long long val = 0;
     6     int flag = 0;
     7     char *src = str;
     8     bool minus = false;
     9     /* 安全性 */
    10     if(str == NULL)
    11     {
    12         return 0;
    13     }
    14     // 处理正负符号的情况 无论正负都占一个位使指针加一
    15     if(*src == '-')
    16     {
    17         src++;
    18         minus = true;
    19     }
    20     else if (*src == '+')
    21     {
    22         src++;
    23     }
    24     
    25     while ((*src != '') && ((*src - '0' >= 0) && (*src - '0' <= 9)))
    26     {
    27         //逐位乘以10
    28         flag = minus ? -1:1;
    29         val = val * 10 + flag*(*src - '0');
    30         /* 处理溢出问题:int最大值0x7FFFFFFF 最小值80000000 */
    31         if(((minus) && (val > 0x7FFFFFFF)) ||
    32            ((!minus) && (val < (signed int)0x80000000)))
    33         {
    34             val = 0;
    35             break;
    36         }
    37         src++;
    38     }
    39     printf("val= %d",(int)val*flag);
    40     return (int)val;
    41 }
    42  
  • 相关阅读:
    数值的整数次方
    Grid Sorting
    第K小的数
    图形学变换矩阵的分解
    神经网络理论简介(三)
    神经网络理论简介(二)
    神经网络理论简介(一)
    C/C++的内存对齐
    strcpy的实现
    C++对象模型简析
  • 原文地址:https://www.cnblogs.com/jianghg/p/4495028.html
Copyright © 2011-2022 走看看