《Qt数据类型》--基本数据类型QByteArray,QString,char,byte之间的转换
在上位机通讯中,根据通讯协议,有时候需要发送16进制的数据,本人在编程的时候容易把各种数据字面值和实际值搞混淆,故写这篇文章给大家参考,也给自己提醒。
在Qt中串口的接收和发送的数据类型都是QByteArray,因此我们需要在通讯的双方进行数据转换,此时我们根据通讯协议,有的设备接收字符串,而有的设备接收16进制的数据。
一般我们发送16进制的数据时使用长度为一个字节的数据类型,比如char,然后在QByteArray的构造函数中初始化进行数据的传输。同时,0x41=65=‘A’,即在16进制下该数据为0x41,在十进制下为65,在ASCII码下为字符A,这时,0x41和"0x41"是完全不同的,前者代表一个数,后者代表一个字符串。为了发送16进制的数据,我的做法是建立一个const char类型的数组,将需要发送的数据存入该数组中,然后在QByteArray的构造函数中调用,此时所得到的数据即要发送的数据。
const char data[3]={0xF5,0x02,0xff}; QByteArray s(data);
// QString转QByteArray方法
//Qt5.3.2
QString str("hello");
QByteArray bytes = str.toUtf8(); // QString转QByteArray方法1
QString str("hello");
QByteArray bytes = str.toLatin1(); // QString转QByteArray方法2
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
//QByteArray转QString方法
//Qt5.3.2
QByteArray bytes("hello world");
QString string = bytes; // QByteArray转QString方法1
QByteArray bytes("hello world");
QString string;
string.prepend(bytes);// QByteArray转QString方法2
qDebug() << string;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
QByteArray类同样不以’ ’为结尾:如
QByteArray bytes;
bytes.resize(5);
bytes[0] = "1";
bytes[1] = "2";
bytes[2] = "3";
bytes[3] = " ";
bytes[4] = "a";
cout << bytes << endl;
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。