Qt 将数据追加到QByteArray中
我想在QByteArray中写入一个QString“str”baData “baData”具有固定大小的80字节(这是必需的) 如果“str”大小小于80,则将“baData”的剩余数据附加0(零)值 我写了下面的代码,但没有正常工作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
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个可访问字符。