**
QT笔记:QByteArray的使用
**
1.QByteArray可以用来存储原始二进制字节和8-bits字符,一般在需要传输原始数据和内存资源短缺时使用(嵌入式linux Qt)
2.QByteArray存储的是char型字符,继承自QMemArray< char >,但QByteArray提供的数组操作,比char更方便
3.QString转Qchar时,需要经过 QByteArray,不能用下面的转换形式char *data = str.toLatin1().data();因为这样的话,str.toLatin1()得到的QByteArray类型结果就不能保存(切记!!!),正确用法如下:
hex= str.toLatin1();//把string字符串转换为字节流
char= QByteArray::fromHex(hex);//把字节流转换成char
4.QByteArray数组
/*****************定义赋值数组*****************/
QByteArray ba;
ba.size(5); //size()大小,不包含'\0' ,qstrlen()包含'\0'
ba[0]=0x10;
ba[1]=0xc1;
……
ba[4]=0xbf;
/******************访问数组*******************/
for (int i = 0; i < ba.size(); ++i)
{
if (ba.at(i) >= 'a' && ba.at(i) <= 'f')//对于只读访问,替代语法是使用at()访问,at()与[]效果一样:
QDebug<< "Found character in range [a-f]" << endl;
}
5.注意头文件
#include <QByteArray>
6.相关操作的方法:
QByteArray .prepend(); // 添加前缀
QByteArray. append(); //添加后缀
QByteArray.data(); //返回指向字节数组中存储的数据的指针,访问时采用ba.data()[0]
QByteArray::fill(char ch, int size = -1); //将字节数组中的每个字节设置为字符ch。如果size与-1(默认值)不同,则字节数组将预先调整为大小。
QByteArray::indexOf(ba, int from = 0); //指定位置
QByteArray::left(int len); //指定左移
QByteArray::righ(int len); //指定右移
QByteArray::toHex();
QByteArray::toStdString();
来源:CSDN
作者:徐腾腾不加班
链接:https://blog.csdn.net/qq_33033059/article/details/89671903