QByteArray在串口通讯中经常被使用,有一定必要较为全面详细的对QByteArray进行阐述。本文通过以下几个部分加以介绍:
初始化
访问与赋值
添加、删除、插入与替换操作
查找与比较
数据转换与处理
1 初始化
2 访问与赋值
访问QByteArray主要有4中方式,分别为[]、at()、data[]和constData[]。其中[]和data[]为可读可写,at()和constData[]仅为可读。如果仅是读,则通过at()和constData[]访问速度最快,因可避免复制处理。示例如下:
QByteArray ba;
ba.resize(6);
ba[0] = 0x3c;
ba[1] = 0xb8;
ba[2] = 0x64;
ba[3] = 0x18;
ba[4] = 0xca;
ba.data()[5] = 0x31;
qDebug()<
qDebug()<
qDebug()<
qDebug()<
qDebug()<
3 添加、删除、插入与替换操作
4 查找与比较
5 数据转换与处理
从串口读取到的QByteArray数据,一般需要进行提取和解析,此时就需要QByteArray转换为各类型数据。常用转换包括:
1)转为HEX,用于显示十六进制,这点在调试时特别有用,因为大多HEX码是没有字符显示的,如0x00、0x20等等;
2)转为不同进制数值并显示,如二进制、八进制、十进制和十六进制等;
3)转为整型、浮点型等数值类型;
4)大小写转换;
5)转为字符串类型;
5.1 Hex转换
把Hex编码转换为char存储到QByteArray:
QByteArray text = QByteArray::fromHex("517420697320677265617421");
text.data(); // returns "Qt is great!"
把QByteArray转为Hex编码:
QByteArray ba;
ba.resize