Qt如何在数组字节中添加更多字节?

时间:2018-11-09 08:21:04

标签: qt

我有一个列表字节,可以在qt的串行端口上发送。

我的列表字节:00 00 00 00 00 00 00 00以及更多00 ... 现在,我想使用 for循环将此字节添加到列表中,并发送到 QByteArray b 。例如查看代码:

QByteArray b("00 00 00 00 00 ....");
qDebug() << b;

请帮助解决此问题。谢谢大家。

2 个答案:

答案 0 :(得分:1)

您可以使用append()将任意数量的QString,QByteArray或char附加到QByteArray中,以获取更多信息,请访问documentation page

答案 1 :(得分:0)

您可能已经打算做以下两件事之一:

  1. 一个由100个零字节填充的数组-请参见下面的array1

  2. 一个数组,其中包含用空格分隔的字符串"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');
   }));
}