我有以下代码需要从普通c ++转换为qt:
// txMessage and UserData are char arrays
memcpy(&txMessage[18], UserData, 8);
所以我的转换是这样的:
QByteArray txMessage;
txMessage.resize(26);
:
:
memcpy(&(txMessage.data()[18]), UserData, 8);
所以这应该有用,但看起来很乱。我必须使用data()函数获取数据指针,然后使用[18]引用元素18,然后使用&获取该地址。
我在线查看了整个QByteArray文档,无法看到另一个返回char *的函数,而operator []只返回一个临时变量,因此无法解决这个问题。但QByteArray有很多选项/功能可能我错过了什么?有人发现/有更好的方法来获取QByteArray中第n个元素的地址吗?
修改 在QByteArray中有一些似乎没有记录的东西:
答案 0 :(得分:2)
您应该使用replace
方法:
txMessage.replace(18, 8, UserData, 8) ;
如果您使用的Qt版本低于4.7,但您的UserData
变量以空值终止,则只需:
txMessage.replace(18, 8, UserData) ;
Otherwize:
memcpy(txMessage.data() + 18, UserData, 8);