我有一个列表字节,可以在qt的串行端口上发送。
我的列表字节:00 00 00 00 00 00 00 00以及更多00 ... 现在,我想使用 for循环将此字节添加到列表中,并发送到 QByteArray b 。例如查看代码:
QByteArray b("00 00 00 00 00 ....");
qDebug() << b;
请帮助解决此问题。谢谢大家。
答案 0 :(得分:1)
您可以使用append()将任意数量的QString,QByteArray或char附加到QByteArray中,以获取更多信息,请访问documentation page
答案 1 :(得分:0)
您可能已经打算做以下两件事之一:
一个由100个零字节填充的数组-请参见下面的array1
。
一个数组,其中包含用空格分隔的字符串"00"
-请参见下面的array2
。
断言显示数组具有哪些属性-即它符合您的假定规范。这也应该向您表明,在所希望的问题上要特别具体,否则通常有很多方法可以解释您的意思-我不知道以下两种解决方案是否是您所需要的!
// https://github.com/KubaO/stackoverflown/tree/master/questions/bytearray-fill-test-53222084
#include <QtCore>
#include <algorithm>
int main() {
constexpr int N = 100;
QByteArray array1(N, '\0');
Q_ASSERT(array1.size() == N);
Q_ASSERT(
std::all_of(array1.cbegin(), array1.cend(), [](QChar c) { return c == '\0'; }));
QByteArray array2;
array2.reserve(N * 3 - 1);
for (int i = N - 1; i >= 0; --i) {
array2.append(i ? "00 " : "00");
}
Q_ASSERT(array2.size() == (N * 3) - 1);
Q_ASSERT(std::all_of(array2.cbegin(), array2.cend(), [i = 0](QChar c) mutable {
return c == (i++ % 3 == 2 ? ' ' : '0');
}));
}