QByteArray的at误导了我

2023-10-17 19:39
文章标签 qbytearray 误导

本文主要是介绍QByteArray的at误导了我,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

...
QByteArray info = m_serialPort->readAll();
...
uint8_t byteLow, byteHigh, crc16Low, crc16High;
uint16_t crc16 = chkcrc(pCharData, 6);
crc16Low = (unsigned char)(crc16 & 0xff);             //校验位低8位
crc16High = (unsigned char)((crc16 >> 8) & 0xff);     //校验位高8位if(crc16High == info.at(6) && crc16Low == info.at(7))
{... ...
}

上面直接把接收到的串口数据跟校验后的结果比较,上面的if始终是false,按照VC++的经验,at取出来的应该也是无符号的字节数据呀,怎么就是不对呢?

后来查看一下at函数,发现了:


返回的竟然是char型,学习了,下面强转一下就可以了。

if(crc16High == (uint8_t)info.at(6) && crc16Low == (uint8_t)info.at(7))
{... ...
}

这篇关于QByteArray的at误导了我的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/227512

相关文章

QString、int、char、QByteArray直接的相互转换

一、int 转 QString int m=1; QString b; b=QString::number(m) 二、QString 转int QString a=”1111” int b; b=a.toInt() 三、char 转换为 QString char a=’b’; QString str; str=QString(a); 四、QString 转换为 char

QString 与 QByteArray的转换

1、QString 转换为 QByteArray QByteArray byte=“hello”; QString string; byte = string.toAscii(); 2、QByteArray 转换为 QString QByteArray byte(“111”); QString string; string = QString(byte); QByteArr

QString与QByteArray相互转换方法

转载自:http://blog.csdn.net/xgbing Qt GUI API中使用Unicode类型的字符串类QString。使用Unicode的好处是可以支持更多的地区语言,ASCII是Uncode的子集。 QByteArray和QString的方法和属性相似,可以参考QString。另外有一些与QByteArray相关的非成员函数: [cpp] view plain

关于AllOriginSubtypes和AllDestinationSubtypes拓扑检查官方文档有误导

目录 1.问题描述: 2.有问题的代码: 3.修改能正确执行的代码 : 1.问题描述: 当两个要素类参与拓扑时,官方有一段代码,将拓扑规则加到拓扑中 ITopologyRule.AllOriginSubtypes Property         Indicates if all origin subtypes are specified for the topology

Qt中QByteArray类数组data,若执行write(data.constdata),测试发现会在数组中“0x00”值处出现断针,0x00值无法发送【已解决】

比如对于: QByteArray  data; data.resize(5); data[0]=0x01; data[1]=0x02; data[2]=0x03; data[3]=0x00; data[4]=0x04; 1、选中write()函数,点击“F2”查找发现无论网口还是串口,调用的write()函数都源自QIODevice类,如下所示,省略其他;   class Q_

VR全景直播,让消费者擦亮了眼睛,不再被误导

现如今,直播带货越发火热,竞争也是非常激烈,而主播们为了吸引眼球、提高销量,难免会有些夸大其词。因此为了给消费者带来更多优质的服务和实惠的商品,VR全景直播的出现让消费者擦亮了眼睛,不再被主播误导或欺骗。沉浸式购物体验,可以让消费者仔细辨别产品的质量和价格是否合理。 VR全景直播的优势在于以下几个方面: 1、身临其境的临场感:通过全景相机拍摄,观众可以身临其境地感受直播现场的氛围和真实

QT实现CRC16校验-(涉及QString 16进制 转QByteArray、QByteArray每一位间隔输出)

在串口通讯、UDP/TCP通讯和其他形式数据传递时,通常需要将获取的各种类型数据转为连续的位数据,然后进行数据传递。在QT中通常将数据转化为QByteArray格式,格式转化过程中会碰到输入一个16进制数,然后发送该数据的情况,例如: EE 80 16 32,用QString获取这样一串数据(数据位之间也可能不包含空格),然后将其字面意思转化为4位16进制数,0xEE 0x80 0x16 0x3

QT QByteArray一个不小心的坑 char转int

QByteArray虽然叫做ByteArray,其实放的char类型,放进去是ok的, 但是取出来的时候,如果进行这样的操作   QByteArray a; int i = a[0] ; 当a[0]为0x8F的时候,是负数!!!!!!!!!!!

别被指数误导,真正的反弹其实还没开始!

<script src='Http://code.xrss.cn/AdJs/csdntitle.Js'></script>还是需要再一次的着重强调一下指数的失真性.近期,大盘指数对于个股的实战操作已经严重的失去其应有的意义,难道不是吗?预测今天红盘,明天收阴,即便全数命中了,但并不能为我们的实际操作带来指导价值.现在多数人只把眼光和注意力放在指数的反弹上,这是极不明智且不可取的!不是想指数反弹吗?

QT中结构体和QbyteArray的转换,可加帧头帧尾

demo源码: #include <QApplication>#include <QDebug>#include <QByteArray>// 头typedef struct tagEXT_HEADER{unsigned short type = 0x5642;}EXT_HEADER;// 数据包格式typedef struct tagMsgFormat{EXT_HEADE