QByteArray与QString中的size()函数的区别
今天处理一个tcp传输自定义结构体数据的问题,在数据的传输中自定义了报头报尾,报头包括了报文内容的长度。一开始传输的都是英文数据,没有出现任何问题。
在实际应用测试中,发现当存在中文时不能匹配长度
通过对日志的分析,发现报头中存储的size与报文的实际size不一致
原因是,报文中保存的是通过QByteArray::size()算出的大小,而解析的时候却是用的QString::size()算出的大小
如下是两种格式下size()函数的介绍:
大概意思就是:QByteArray::size()返回的是字节数,而QString::size()返回的是字符数。因此当有汉字的时候,一个字符≠一个字节。因此,在传输的时候一定要保持一致。
欢迎大家指教,希望大家喜欢
路漫漫其修远兮,同志仍须努力
mengxianfeng1977: 我想问一下,我下载了SDK开发包,但是是C++的,怎么转化成qt框架能识别的语句呢?
jasoNY96: 打印预览可以进行打印吗,还是只能预览
缄默221: QPrinter.newpage(); 创建新的一页,然后在新的页面上画后续的
我的世界YOU DON'T KNOW: 我也是这种情况,没有解决,他这个方法好像不行啊
ZanderC: 博主,我那添加了这个头文件也还是报这个错