0

、、などがあるchar array[10]としましょう。[0] = '1'[1] = '2'[2] = '3'

(int) 123Cを使用して、これらのインデックスから作成するにはどうすればよいですか?

SRAM が 2kb 未満に制限されている 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;
}
4

3 に答える 3

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 に答える
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 に答える