Skip to content

1122unsigned char,指针,qbytearray之间的转换

ziyouzy edited this page Nov 22, 2019 · 2 revisions

QByteArray的功能和unsigned char或者char一样,可以用于最基层的数据通信逻辑

QByteArray类很强大,可以把符合16进制数标准的字符串转化为QByteArray:

QString str="55AA010203";

b =QByteArray::fromHex(str.toLatin1())

m_tcpscoket->write(b);


write方法发送的是完整的char数组,如果是tcpsocket就会方便很多,因为在面向字符编程的过程中,socket完成了数据包的打包与验证,每一次发送与接收都能直接对接到完整的有头有尾的数据包。而如果是基于串口的数据传输,无法保证每次接收都是完整的包,而是纯粹的面向字符变成,需要自己加工与校验。


而对于下位机传过来的数据接收问题,通过qt所接收到的都是QByteArray数组,基本上等同于char数组或者是unsigned char数组,但是QByteArray会有更多的很方便方法。

数据的接收如果只用来显示会比较省事,但是如果需要转化成对应的16进制整型数组,再去对数组的每一位进行比较操作,就会用到一些比较原始的数据类型与转换方式:

QbyteArray::data()方法可以将QByteArray数据类型转化为一个原始char数组的首位指针

(unsigned char*)可以将char*强制抓化成无符号的数组指针

对于指针的数学运算,目前只使用了比较简单的方法,*(c+i),从而实现每一位16进制整型数据的调用

test2

Clone this wiki locally