QByteArray 获取第n个元素的地址

QByteArray get the address of nth element

我需要将以下代码从纯 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 文档,看不到 returns char* 和 operator [] 只有 returns 一个临时变量的另一个函数,所以无法解决这个问题。但是 QByteArray 有这么多 options/functions 也许我错过了什么?有人 found/got 有更好的方法来获取 QByteArray 中第 n 个元素的地址吗?

编辑 QByteArray 中似乎没有记录一些东西:

您应该改用 replace 方法:

txMessage.replace(18, 8, UserData, 8) ;

如果您使用的 Qt 版本低于 4.7,但您的 UserData 变量以 null 结尾,那么只需:

txMessage.replace(18, 8, UserData) ;

否则:

memcpy(txMessage.data() + 18, UserData, 8);