QT开发中文网

QByteArray SendArray = QByteArray::number(str.length()); SendArray =vSendArrayHeard + SendArray + str.toUtf8().constData(); int sizeWritten = send(it.key(), SendArray, SendArray.size(), 0); qDebug()

根据你的描述,如果要按照2字节的包头+2字节的数据长度+数据这种方式构建 SendArray 数组,可以使用 QDataStream 类进行操作。以下是一个示例代码:

QByteArray SendArray;
QDataStream stream(&SendArray, QIODevice::WriteOnly);

quint16 header = 0; // 包头
quint16 length = str.length(); // 数据长度
QString data = str.toUtf8().constData(); // 数据内容

stream << header << length << data;

// 输出调试信息
qDebug() << "SendArray:" << SendArray.toHex();

// 发送数据...

上述代码首先创建了一个空的 QByteArray 对象 SendArray,然后使用 QDataStream 构造函数将其与写入模式关联。接下来,定义了两个变量:header 用于存储包头(假设初始值为0),length 存储数据长度(即字符串 str 的长度)。然后将字符串 str 转换为 UTF-8 编码,并将它赋给变量 data

之后,使用流操作符 << 将包头、数据长度和数据内容按顺序写入到 stream 中。这样就完成了对 SendArray 的构建。

最后,可以通过调用 toHex() 函数以十六进制形式输出数组内容,在实际发送之前进行调试和验证。

请根据上述示例修改你的代码,并在发送数据之前执行相应操作。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=11649

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?