1

我想将 QString ' str ' 写入 QByteArray ' baData '。

'baData' 的大小固定为 80 字节(这是必需的)。

如果“ str ”大小小于 80 ,则将“ baData ”的剩余数据附加0(零)值。

我写了以下代码,但没有正常工作。

void MyClass::CopyData(QByteArray &packet)

{

         packet.truncate(0);
         packet[0] = 0x12;
         packet[1] = 0x34;
         ....

         QByteArray baData;
         baData.resize(80);
         baData = 0;

        QString str = "Hello Wrold";

        baData = str.toLocal8Bit();

        packet.append(baData, 80);

}

数据包大小不固定,但如果固定,则为 baData 大小,即 80。

4

1 回答 1

1

以下对我有用:

QByteArray baData;
baData.fill(0, 80);

QString str = "Hello World";
baData.insert(0, str.toLocal8Bit());
baData.resize(80);

基本上它的工作原理是,QByteArray用 80 字节的 0 填充,在开头插入数据,然后将其大小调整回 80 字节。

于 2014-03-21T08:35:45.343 回答