gpt4 book ai didi

qt - 从QByteArray删除第一个字节

转载 作者:行者123 更新时间:2023-12-04 18:42:33 28 4
gpt4 key购买 nike

我想编写一个将QByteArray输入到该函数的函数。
我想从接收数据中删除一些 header ,并将其存储到全局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);
}
}

我要删除“n”号。从“数据”开始的字节数,并将剩余数据存储到“ByteArrayData”

提前致谢。

最佳答案

您似乎想要的只是复制原始数组并使用remove

ByteArrayData = data;
ByteArrayData.remove(0, n); // Removes first n bytes of ByteArrayData,
// leaving data unchanged

由于QByteArray是隐式共享的,因此副本的构建将花费固定的时间,而修改(删除)将在需要时生成实际的副本。

为了高效地追加,您可以只使用 data来获取字节数组,并使用 append来获取所需的部分。这样可以防止不必要的临时对象。看起来像;
ByteArrayData.append(data.data() + n, data.size() - n);

关于qt - 从QByteArray删除第一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22496928/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com