我在Arduino平台上进行编码,我正在尝试编写将在C中连接/附加字节数组的内容。
byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};
byte c[] = a + b; // equivalent to {a1, ..., an, b1, ..., bm}
获得上述结果的最佳方法是什么?
我尝试在网上搜索,但是我运气不好。我在SO上看到了另一个答案,强调了为了做到这一点所需要的步骤,但我无法遵循它们。他们还说有些图书馆可以处理这类事情,但是当我在Arduino时,我不确定这些是否完全可供我使用。
我知道需要进行某种内存操作才能使其正常工作,但我对这些低级操作不熟悉,因此它们对我来说没有多大意义。我有更高级语言的经验(C#,Java和一些C ++)。
我还应该补充:相同的技术可以用于:
byte a[] = {a1, ..., an};
byte b[] = {b1, ..., bm};
a = a + b
答案 0 :(得分:7)
C中没有byte
类型。除非是某种类型定义,否则您可以使用unsigned char
或<stdint.h>
中的某些固定类型。无论如何,这是一些解决方案:
#include <stdio.h>
#include <string.h>
int main(void) {
unsigned char a[3+3] = {1, 2, 3}; // n+m
unsigned char b[3] = {4, 5, 6}; // m
memcpy(a+3, b, 3); // a+n is destination, b is source and third argument is m
for (int i = 0; i < 6; i++) {
printf("%d\n", a[i]);
}
return 0;
}
确保数组a
至少有n + m
个元素(此处为n = 3
和m = 3
),以避免数组溢出问题(即未定义)行为,可能会导致程序崩溃甚至更糟。)
答案 1 :(得分:0)
如果已知大小,您只需创建一个具有该大小的新字节数组,并使用简单的循环来填充它。