QByteArray与QString中的size()函数的区别

今天处理一个tcp传输自定义结构体数据的问题,在数据的传输中自定义了报头报尾,报头包括了报文内容的长度。一开始传输的都是英文数据,没有出现任何问题。

在实际应用测试中,发现当存在中文时不能匹配长度

通过对日志的分析,发现报头中存储的size与报文的实际size不一致

原因是,报文中保存的是通过QByteArray::size()算出的大小,而解析的时候却是用的QString::size()算出的大小

如下是两种格式下size()函数的介绍:

大概意思就是:QByteArray::size()返回的是字节数,而QString::size()返回的是字符数。因此当有汉字的时候,一个字符≠一个字节。因此,在传输的时候一定要保持一致。

 

欢迎大家指教,希望大家喜欢

路漫漫其修远兮,同志仍须努力

xumingyifrend
关注 关注
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
QStringsize()与QByteArraysize()的区别&&QString::at()和QString::left()
qq_20853741的博客
11-06 1707
一、QStringsize()与QByteArraysize()的区别 在实际测试,发现QByteArraysizeQStringsize不一致 原因是,报文打包的是通过QByteArray::size()算出的大小,而解包的时候却是用的QString::size()算出的大小 如下是两种格式下size()函数的介绍: QByteArraysize() QString::size() 也就是说:QByteArray::size()返回的是字节数,而QString::size(
QByteArray的构造 一定要有size(),否则据不全
证券指标的专栏
08-31 8423
QByteArray(    m_spLoginQrResp->qrinfo().c_str(),     m_spLoginQrResp->qrinfo().size()   )
QByteArray 详解
xie__jin__cheng的博客
07-06 553
QByteArray 详解
QByteArray length() count() size()的区别
lxj362343的博客
12-03 5722
以前没注意length() count() size()这几个有什么区别,都是随意用,想到哪个就用哪个,但总是疑问到底他们有没有区别。 今天就去探个究竟,于是查qt的帮助文档,终于找到答案,三个确实没有区别,都是和size一样的! 以下均摘抄自qt帮助文档,希望可以给初学者提供帮助。 int QByteArray::length() const Same as size(). int QByteArray::count() const This is an overloaded func..
int QString::size () const
美丽的流域
12-26 886
int QString::size () const Returns the number of characters in this string. The last character in the string is at position size() - 1. In addition, QString ensures that the character at position size() is always '/0', so that you can use the return valu
QByteArray使用详解
啊渊的专栏
06-20 3717
`QByteArray` 是 Qt 提供的一个字节数组类,用于处理二进制据。它可以存储原始字节,并提供了一系列方法来操作和转换这些字节数据。`QByteArray` 在处理文本和二进制文件、网络据传输等场景非常有用。
QByteArrayQstring
06-27
`QByteArray` 是 `Qt` 库的一个类,它代表字节数组,常用于处理二进制据,而 `QString` 则是 `Qt` 字符串类型,用于文本据。如果你有一个 `QByteArray` 并想将其转换为 `QString`,你可以使用 `QByteArray...
QByteArrayqstring
06-29
将 `QByteArray` 转换为 `QString`,你可以使用 `QString::fromUtf8()` 函数,因为 `QByteArray` 存储的是字节,而 `QString` 需要的是 Unicode 编码的文本。这个函数会根据指定的字节解码转换成 `QString`。 例如...
qt qbytearrayqstring
03-29
可以使用QByteArrayQString构造函数将QByteArray转换为QString: ```cpp QByteArray byteArray("Hello world"); QString string = QString::fromUtf8(byteArray); ``` 或者,您可以使用QString的静态函数fromUtf...
qt qbytearrayqstring 16进制转为汉字
最新发布
09-21
在Qt,`QByteArray`是一个字节序列容器,而`QString`是Unicode字符串。要将`QByteArray`转换成`QString`并显示为16进制形式,通常会先解码字节然后再转换成十六进制。这里有一个简单示例: ```cpp #include #...
QString与各种类型之间的转换
qq_44358287的博客
12-16 1384
toLatin1(),toLocal8Bit(),toUtf8() 都返回(也就是说QString调这几个方法就能转成QByteArray)在于返回字符串编码方式不同toLocal8Bit:本地操作系统设置的字符集编码toLatin1:ASCII编码toUtf8:UTF-8编码。
Qt:71---QByteArray字节数
董哥的黑板报
07-23 3118
一、QByteArray介绍 概念:提供一个字节数组(序列),QByteArray可用于存储原始字节(包括“\0”)和传统的8位“\0”端接字符串,使用 QByteArray比使用constchar更方便. 在IO操作,C语言常使用constchar,而Qt常使用QByteArray 二、常用语法 //函数 size(); //得到大小,以字节为单位 resize(); //定义大小 at(); //通过索引取值 演示案例 QByteArray ...
Qt之字节数组类QByteArray
lsh11111的博客
01-09 1246
子节组类QByteArray字节数组类QByteArray提供一个字节数组,用于存储原始字节。第二次调用 fill()函数后,因为fill()函数的第二个参size是2,所以会重新调整 ba的空间大小,变为2个字节,而且内容重新设置为"XX"。虽然我们定义了5个字节长度的字节数组对象,索引范围从0到4,但是系统自动会在字节数组对象结尾添加一个"0字符,这是为了某些场合使用方便。例如,以下代码创建一个大小为 5个字节的字节数组,据为“Hello”:QByteArray ba ("Hello");
qtQByteArray字节数
热门推荐
u011555996的博客
05-15 1万+
QByteArray bb("Hello"); //创建字节数组 int n=bb.size(); //返回字节数组的大小 //不包括终止符 QByteArray ba;//创建一个空字节数组 ba.resize(6);//设置字节数组的大小 // 为终止符 ba[0] = 0x3c; //赋值 ba[1] = 0xb8; ba[2] = 0x64; ba[3] = 0x18; ba[4] = 0xca; .
C/C++字符组的大小---sizeof,strlen,string,length()
yutiannj的专栏
05-18 8580
#include "iostream" //#include #include //strlen /**是C++标准库头文件,包含了拟容器class std::string的声明(不过class string事实上只是basic_string的typedef),用于字符串操作。 *cstring>是C标准库头文件的C++标准库版本,包含了C风格字符串(NUL即'\0'结尾字符串)相关的一些类型和
QT QByteArray字节数组详解
m0_73482095的博客
01-03 1367
提供一个字节数组(序列),QByteArray可用于存储原始字节(包括“\ 0” )和传统的8位 “\ 0” 端接字符串,使用 QByteArray比使用const char 更方便.,C语言常使用const char ,而Qt常使用QByteArray
QString 使用注意事项
CXYYL的博客
07-28 304
QString::IsNull() 和 QString::IsEmpty() QString str; // str is null, and is empty str = ""; // str is empty, is not null (存有一个字符串末尾的0,至少占一个字节) QString::toInt() QString strNum = QString::number(1.44); int num = strNum.toInt(); // 结果 num == 0 !!! QS
Qt学习笔记之QString
浩瀚之水的专栏
01-31 2535
标准C++提供了 两种字符串。一是C风格的以“\0”祝福语胡额为的字符组,二是字符串类String。详见《深入浅出之string》。 1. 字符串类QString QString 类是 Qt 用于表示字符串的类,实现在 QtCore 共享库QString类保存了16位Unicode值,提供了丰富的操作、查询、换换等函数。该类还进行了使用隐私共享、高效的内存分配策略等多方面的优化。 ...
QString的基础知识
zw_ggr_2017的博客
05-19 1411
QString,转换,输入输出交互
写文章

热门文章

  • QTableWidget设置某列可编辑某列不可编辑 11762
  • QT中QPrinter打印功能 11419
  • windows下SSH服务的开启 7260
  • Qt中通过触摸或鼠标实现scroller滚动 6980
  • 关于sqlite迁移至mysql方法 6503

最新评论

  • 基于QT的海康威视网络摄像头二次开发

    mengxianfeng1977: 我想问一下,我下载了SDK开发包,但是是C++的,怎么转化成qt框架能识别的语句呢?

  • QT中QPrinter打印功能

    jasoNY96: 打印预览可以进行打印吗,还是只能预览

  • QT中QPrinter打印功能

    缄默221: QPrinter.newpage(); 创建新的一页,然后在新的页面上画后续的

  • error: C2512: “Ui::XXX”: 没有合适的默认构造函数可用

    我的世界YOU DON'T KNOW: 我也是这种情况,没有解决,他这个方法好像不行啊

  • error: C2512: “Ui::XXX”: 没有合适的默认构造函数可用

    ZanderC: 博主,我那添加了这个头文件也还是报这个错

最新文章

  • 基于QT的海康摄像头二次开发(二)
  • centos7.5上搭建FTP服务器并在windows中访问及遇到的一些问题
  • 基于QT的海康威视网络摄像头二次开发
2021年2篇
2020年2篇
2019年35篇
2018年8篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xumingyifrend

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王抚州衡水网站优化价格丽水网站快速优化红河哪有网站建设优化网站内部优化的做法昆明网站首页优化闵行区360网站优化机构长春网站排名优化公司阳江seo网站优化运营嘉定区公司网站优化方案定制天津网站优化价格咨询胡歌网站优化做好网站结构优化北京seo网站排名优化公司付费网站优化公司猪八戒网站优化网站排名优化推荐乐云seo威海网站关键词百度优化文山网站推广优化龙口智能响应式网站优化公司无锡优化网站标准深圳外贸网站关键词优化推广网站搜索优化哪家价格便宜网站优化外链有什么作用响应式网站排名优化云南网站建设优化河北建材行业网站优化推广可靠吗淮安网站关键词优化平台南昌县网站优化小语种网站优化南阳营销型网站优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化