Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 将数据追加到QByteArray中_Qt_Qstring_Qbytearray - Fatal编程技术网

Qt 将数据追加到QByteArray中

Qt 将数据追加到QByteArray中,qt,qstring,qbytearray,Qt,Qstring,Qbytearray,我想在QByteArray中写入一个QString“str”baData “baData”具有固定大小的80字节(这是必需的) 如果“str”大小小于80,则将“baData”的剩余数据附加0(零)值 我写了下面的代码,但没有正常工作 void MyClass::CopyData(QByteArray &packet) { packet.truncate(0); packet[0] = 0x12; packet[1] = 0x34

我想在QByteArray中写入一个QString“strbaData

“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);

}

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

以下内容适用于我:

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

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

基本上,它的工作原理是,用80字节的0填充
QByteArray
,在开始处插入数据,然后将其重新调整为80字节。

是否需要resize(),因为它不使用resize(),如果我的'str'超过80字节,我只想写前80字节,我该如何处理它。@如果希望它的长度为80字节,则需要调整它的大小。如果您的
str
长度超过80个字节,
baData
将只包含上述示例中的前80个字节。请小心。QByteArray::resize()不会产生以null结尾的字符串。如果需要80个字符的以null结尾的QByteArray,请将大小调整为小于-79的一个。QByteArray::data()始终以null结尾,至少包含size()+1个可访问字符。