QT开发中文网

你这个代码更离谱length 算出来的是0

非常抱歉,我之前的回答有误。关于计算带有中文字符的长度,可以按照以下方式修改代码:

quint16 length = 0;
QByteArray lengthBytes = buffer.mid(headerLength, 2);
QDataStream stream(&lengthBytes, QIODevice::ReadOnly);
stream.setByteOrder(QDataStream::BigEndian);
stream >> length;

int packetSize = headerLength + sizeof(length) + length;

if (buffer.size() >= packetSize) {
    QByteArray packet = buffer.mid(headerLength + sizeof(length), length);

    // 处理完整的数据包
    handlePacketblack(packet);

    buffer.remove(0, packetSize);
} else {
    break; // 数据不完整,等待更多数据
}

在这个修正后的代码中,我们使用QDataStream来读取字节数组并获取正确的长度值。然后,根据这个长度值提取完整的数据包,并进行处理。

对于处理数据包部分(即handlePacketblack()函数),你可能需要根据实际情况进行进一步处理。

再次对之前给出错误信息表示歉意,希望这次能解决你的问题。如果还有其他问题,请随时提问。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?