【发布时间】:2015-04-23 11:41:37
【问题描述】:
我正在 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
【问题讨论】:
-
尺寸是固定的吗?
-
假设
byte是char大小的等价物,byte c[sizeof(a) + sizeof(b];和两个memcpy调用会做到这一点,如果这确实是声明a和b的方式。 -
@WhozCraig 是的。 a 和 b 是这样声明的。但是,我已经编辑了问题以包含 b 也被 附加 到 a 的情况。
-
@Alizter 不会发生,除非
a最初的大小可以容纳其数据和附加数据的空间,并且迟早仍会涉及memcpy类型的操作。无论如何,您使用的语法肯定与 C 语言不一致。 -
@WhozCraig 是的。我知道它绝对不是 C。我用伪风格写了它以更好地解释我的麻烦。
标签: c arrays arduino concatenation