附加到C++中的字节数组
Appending to a Byte Array in C++
我在C++中有两个数组,我想把一个附加到另一个的末尾,这样:
char byte1[] = {0x00};
char byte2[] = {0x01};
将这两个值相加应该得到{0x00,0x01}。我该怎么做?使用System.arraypy()在Java中很简单,但我不确定什么库能帮助我在C++/C中实现这一点,因为我正在为微控制器编码。
如果您使用C,您可以执行以下操作:
//Whatever sizes your stating arrays are.
const int S_ARR1 = 3;
const int S_ARR2 = 2;
//Create buffer that can hold both.
char combined[S_ARR1 + S_arr2];
//Copy arrays in individually.
memcpy(combined, byte1, S_ARR1);
memcpy(combined + S_ARR1, byte2, S_ARR2);
如果你想要C++,首先不要使用字节数组。使用std::vector作为一个数组,它可以跟踪自己的元素数量,这样你就可以感觉自己更像是在java世界中:)
关于嵌入式C++矢量内存的一点警告:
在微控制器中,std::vector会浪费大量内存,因为它是基于当前大小的倍数增长的。里面的东西越多,你就可能浪费得越多。话虽如此,这是一个很棒的类,只要你知道它是如何处理内存的,它就是一个很好的选择。
你不能像你在那里写的那样,C为这些数组分配固定内存,以适应你用1字节初始化的数据的大小
如果你知道要使用多少数据,你可以用char byte[10];
为10个元素初始化一个更大的数组,但你不能在C中创建时自动填充它。如果你直到运行时才知道需要多少数据,那么你需要用new(或malloc或C)来分配它。
如果您想要类似java的行为,请查看std::vector,如果您的微控制器支持
尝试使用Arduino环境中的string
类,该类旨在与AVR-g++编译器一起在AVR上使用。不过,我不确定它是否支持null(0)字节。
http://arduino.cc/en/Reference/StringObjecthttp://github.com/arduino/Arduino/blob/master/hardware/arduino/cores/arduino/WString.cpp
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 基于字节数组生成静态范围整数值
- 将字节数组转换为带有字节序问题的指针
- 找到一种有效的方法,在 2 个巨大的缓冲区上执行 MAX,每字节字节
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 swig 追加到字节数组
- C++ 替换字节数组中项的顺序
- QDataStream 读取和写入的字节数比 QFile::length() 报告要多
- 如何从保存在 Java 中C++的字节数组中读取数字?
- 如何通过libpq c api插入字节的数组
- i2c中的字节指针数组
- 以 C++ 为单位递增 16 字节字符数组
- new[] 一个包含构造函数的字节对象数组没有错,对吧?
- 创建未知长度的字节/字符数组
- 我如何将bitset转换为字节/uint8数组
- C++ <--> C# 修改字节编组数组
- 将m个字节的数组拆分为n个字节的块
- c++到c#:有3个元素的字节指针数组等于什么?