【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 

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();

你可能感兴趣的:(C++/QT)