C,如何将数字拆分为数组,转换为int

时间:2015-03-31 11:01:01

标签: c arrays string strtol

假设我有char array[10][0] = '1'[1] = '2'[2] = '3'等。

如何使用C?

从这些索引创建(int) 123

我希望在一个仅限于2kb SRAM的arduino板上实现这一点。足智多谋效率是关键。


感谢Sourav Ghosh,我用自定义函数解决了这个问题:

long makeInt(char one, char two, char three, char four){
  char tmp[5];
  tmp[0] = one;
  tmp[1] = two;
  tmp[2] = three;
  tmp[3] = four;

  char *ptr;
  long ret;
  ret = strtol(tmp, &ptr, 10);

  return ret;
}

3 个答案:

答案 0 :(得分:4)

我认为你需要知道的是strtol()。阅读详情here

引用基本部分

  

long int strtol(const char *nptr, char **endptr, int base);

     

strtol()函数会根据给定的nptrlong int中字符串的初始部分转换为base eger值,该值必须介于{{1}之间}和2包含,或者是特殊值36

答案 1 :(得分:2)

int i = ((array[0] << 24) & 0xff000000) |
                ((array[1] << 16) & 0x00ff0000) |
                ((array[2] << 8) & 0x0000ff00) |
                ((array[3] << 0) & 0x000000ff);

这应该有效

答案 2 :(得分:2)

如果您没有strtol()atoi()可用的库,请使用此代码:

int result = 0;
for(char* p = array; *p; )
{    
    result += *p++ - '0';
    if(*p) result *= 10; // more digits to come
}