0

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

我将如何(int) 123使用 C 从这些索引创建?

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


多亏了 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;
}
4

3 回答 3

4

我想你需要知道的是strtol()在此处阅读详细信息。

仅引用重要部分

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

strtol()函数根据给定的 将字符串的初始部分转换nptr为一个long integer 值,base该值必须介于236包含之间,或者是特殊值0

于 2015-03-31T11:03:09.340 回答
2
int i = ((array[0] << 24) & 0xff000000) |
                ((array[1] << 16) & 0x00ff0000) |
                ((array[2] << 8) & 0x0000ff00) |
                ((array[3] << 0) & 0x000000ff);

这应该工作

于 2015-03-31T11:04:07.807 回答
2

如果您没有图书馆strtol()atoi()可用的图书馆,请使用:

int result = 0;
for(char* p = array; *p; )
{    
    result += *p++ - '0';
    if(*p) result *= 10; // more digits to come
}
于 2015-03-31T11:04:38.190 回答