组合阵列元素Arduino

时间:2016-10-25 20:54:16

标签: c++ c arduino

新手在这里。我试图将数组元素组合成一个整数。

我想将数据元素11到13组合成存储在combinedArray中的单个数字。期望的结果是使用combinedArray [1] = 123。

uint8_t data[32];
uint8_t combinedArray[2];
data[11] = {'1'};
data[12] = {'2'};
data[13] = {'3'};

非常感谢任何帮助。我认为需要转换数据类型才能连接它。

3 个答案:

答案 0 :(得分:0)

您可以使用var代替uint8_t吗?

像这样分配给combinedArray:

combinedArray[1] = data[11] + data[12] + data[13]

你实际上已经在数据[]中使用了字符串。 '1'是一个字符串,1是一个数字。

答案 1 :(得分:0)

你应该能够做到

uint8_t data[32];
uint8_t combinedArray[2];
data[11] = {'1'};
data[12] = {'2'};
data[13] = {'3'};
String result = data[11] + data[12] + data[13];
//then you can convert that to a char array by doing result.toChars();
//or converty the result by doing Integer.parseInt(result);
//you WILL have to use chars instead because they will concatenate correctly
//because uint8_t is not a character its a number so when you concatenate              
//them you add the two ascii values together

答案 2 :(得分:0)

简单小数(在ascii中)到十进制(数字)转换就足够了:

combinedArray[1] = 0;             // value must be defined
for (uint8_t * ptr = data+11; ptr != data+14; ++ptr) {
  combinedArray[1] *= 10;         // move previous value by one digit to the left (ie. 12 => 120)
  combinedArray[1] += *ptr - '0'; // substract ascii value of '0' from character to get value and add it to the result
}

如果使用字符设置data数组中的元素是错误的,那么您必须删除- '0'才能使用正确的值:
现在,data[11] = {'1'};中的字符“1”的值为49(字符“1”的ASCII值)。