本文主要是介绍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误导了我的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!