Qt QbyteArray数据副本
我有两个Qt QbyteArray数据副本,qt,qbytearray,Qt,Qbytearray,我有两个QByteArray,sData和dData 我想将n字节从dData中的x位置复制到sData的y位置,即和sData[y] 在C语言中,数组复制由memcpy(&dData[x],&sData[y],n)完成 如何在Qt中复制QByteArray的上述数据?从,您可以使用替换功能:- QByteArray & QByteArray::replace(int pos, int len, const QByteArray & after) 将索引位置pos中的len字节
QByteArray
,sData
和dData
我想将n
字节从dData
中的x
位置复制到sData
的y
位置,即和sData[y]
在C语言中,数组复制由memcpy(&dData[x],&sData[y],n)完成代码>
如何在Qt中复制QByteArray
的上述数据?从,您可以使用替换功能:-
QByteArray & QByteArray::replace(int pos, int len, const QByteArray & after)
将索引位置pos中的len字节替换为后面的字节数组,并返回对此字节数组的引用
所以,使用重载
QByteArray & QByteArray::replace(int pos, int len, const char * after);
sData = sData.replace(y, nBytes, dData.constData()+x);
除了给定的答案之外,您还可以使用memcpy
和QByteArray::data()
成员获取指向内部数组的指针。当然,您需要确保目标阵列的大小足以容纳源阵列中复制的所有数据
memcpy(dest.data() + y, src.constData() + x, n)
如果要从索引0复制数据,有一个函数:
sData.setRawData(dData, n);
如果有一个MeMCPY C++替代品,我们应该使用SETRAWDATA或替换这一替代方案,这不是一个答案,而是一个重要的考虑因素:请记住QByteArray的原始数据工具允许使用QByTurRayObjor作为C数组的前部。它不会复制上述原始数据中的任何内容,您也不能将此类QByteArray对象从原始数据存在的范围中传递出去。仅供参考:这个答案是误导性的,因为数据没有被复制。setRawData的Qt文档声明:“未复制字节。QByteArray将包含数据指针。调用者保证,只要此QByteArray及其任何未修改副本存在,数据就不会被删除或修改。”