如何将char数组转换为整数

Posted

技术标签:

【中文标题】如何将char数组转换为整数【英文标题】:How to convert a char array to integer 【发布时间】:2013-03-30 14:40:26 【问题描述】:

我有一个由 1 和 0 组成的数组,它以这样的方式压缩:当 1 的数量大于 10 时,当 1 的数量为 n 并且 0 的数量大于 10 时,它写入 +n+当 n 在 0 的个数中时写入 -n- 否则按原样写入。

现在的问题是,我需要解压缩数组以将其写回文件。但是我找不到将零或一的数量转换为整数的方法。它一直给我一个错误,上面写着初始化'int atoi(con​​st char *)的参数1和同一行上的另一个错误,上面写着从'char'到'const char*'的无效转换 我在 Linux 中工作。 这是我的代码的一部分

else if(str[i]=='+')

n=atoi(str[i+1]);
for(int j=0;j<n;j++)    

    strcat(temp,"1");
    i=i+n-1;

           

【问题讨论】:

atoi() 已弃用。考虑改用 strtol()。 atoi 未被弃用。如果你需要一个 int 并且你确定你正在使用一个以 nul 结尾的字符串,那么没有理由不使用 atoi。 【参考方案1】:

这是一个做“扩展”的算法——永远不要在生产中使用它——例如,没有错误检查,所以它是不安全的。这是一个简单的例子。

char *decode(char *q)

   char *all=NULL;
   long i=0;
   int n='0';
   char *p;
   if(*q== '+')
     n='1';
   ++q;
   i=strtol(q, NULL, 10);
   all=calloc( i + 1, 1);
   for(p=all; i; i--)
      *p++=n;

   return all;


char *decompress(char *dest, char *str)

    char *p=str;
    char *q=dest;
    for(; *p; p++)
    
       if( isdigit((int)*p) )
       
          *q++=*p;
          *q=0x0;
       
       else  // - or +
       
          char *tmp=decode(p);
          strcpy(q, tmp);   
          q=strchr(q, '\0');
          free(tmp);         
          p=strchr(p+1, *p);  // next 
       
    
    return dest;

【讨论】:

以上是关于如何将char数组转换为整数的主要内容,如果未能解决你的问题,请参考以下文章

如何将浮点数转换为长度为 4 的字节数组(char* 数组)?

将十六进制数组(char *)转换为整数

如何在C ++中将字节数组中的整数转换为数字

java 中如何将一个字符串转换成一个整数数组

在 DB2 中将位数据的 char 转换为整数

将打开的cv mat转换为整数数组