我想编写一个将QByteArray输入到该函数的函数。我想从接收数据中删除一些标头,并将其存储到全局QByteArray中。
void abc::CopyData(const QByteArray &data)
{
switch(RequestPacketCount)
{
case REQUEST_FIRST_PACKET:
{
ByteArrayData = data;
}
break;
case REQUEST_SECOND_PACKET:
case REQUEST_THIRD_PACKET:
ByteArrayData.append(data);
}
}
Run Code Online (Sandbox Code Playgroud)
我要删除“ n”号。从“数据”开始的字节数,并将剩余数据存储到“ ByteArrayData”
提前致谢。
您似乎想要的只是复制原始数组并使用remove ;
ByteArrayData = data;
ByteArrayData.remove(0, n); // Removes first n bytes of ByteArrayData,
// leaving data unchanged
Run Code Online (Sandbox Code Playgroud)
由于QByteArray是隐式共享的,因此副本的构建需要花费恒定的时间,而修改(删除)将在需要时生成实际的副本。
为了有效地附加,您可以只使用数据来获取字节数组,然后附加所需的部分。这样可以防止不必要的临时对象。看起来像;
ByteArrayData.append(data.data() + n, data.size() - n);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11270 次 |
| 最近记录: |