将char数组中的字符连接成一个整数

时间:2013-11-16 14:34:03

标签: c++ arrays string arduino i2c

我一直在尝试用ATtiny 85创建串行电机控制器。我把它设置为奴隶。它一次从一个主字节接收字符,并将它们加载到char数组中进行解析。

我遇到的问题是我找不到连接它们的方法而不是添加值。

rxChrData = TinyWireS.receive();
rxString[rxIndex] = char(rxChrData);
rxIndex++;  
if (rxChrData == ':'){
          //rxString 2-3 each holds the value 9.
          //The lines below print "27" on the serial line.
          n = int(rxString[2]+rxString[3]+rxString[4]);
          Serial.println(n);
          rxIndex = 0;  
      }

n的值是27,我需要它是999。

我尝试将其转换为String,连接,然后返回整数。没运气。我也尝试了一些其他无能为力的工作而没有运气。

3 个答案:

答案 0 :(得分:3)

喜欢这个

n = 100*rxString[2]+10*rxString[3]+rxString[4];

或者这个

n = rxString[2]+10*rxString[3]+100*rxString[4];

答案 1 :(得分:0)

另一种选择:使用strtol():

#include <cstdlib>

n = strtol( rxString+2, NULL, 10 );

答案 2 :(得分:0)

采用更一般的方法......

if (rxChardata == ':') {
    // Consume the ':'
    rxCharData = TinyWireS.receive();
    int n = 0;
    while (isdigit(rxCharData)) {
        n = n * 10 + (rxCharData - '0');
        rcCharData = TinyWireS.receive();
    }
    Serial.println(n);
}

但是你需要检查当你调用TinyWireS.receive()时会发生什么,并且没有更多的数字......它会返回'\ 0'吗?在这种情况下,上述方法将起作用。