QByteArray详解

1、概述

2、初始化

2.1 QByteArray()

QByteArray array1;
array1.resize(4);
array1[0] = 1;
array1[1] = 2;
array1[2] = 'm';
array1[3] = 'k';
qDebug() << array1;  //结果: "x01x02mk"

2.2 QByteArray(const char *data, int size = -1)

  size指定数据长度,默认为-1,那么QByteArray在构造的时候遇到第一个 '' 空字符时停止。所以如果你要赋值的数据中确实有 '' 的话,需要指定size。

QByteArray array2("helloworld");
qDebug() << array2;  //结果: "hello"

QByteArray array2("helloworld", 11);
qDebug() << array2;  //结果: "hellox00world"

QByteArray array3;
array3 = "hello world";
qDebug() << array3;    //结果: "hello world"

2.3 QByteArray(int size, char ch)

QByteArray array4(5, 'Q');
qDebug() << array4;    //结果: "QQQQQ"

 3、访问

  QByteArray的访问方式有四种:[]、data[]和at()、constData[]。其中[]和data[]为可读可写;at()和constData[]为只读,因此访问用这两种速度较快。

4、成员函数

4.1 char *QByteArray::data()

  返回指向字节数组中存储的数据的指针。

QByteArray array2("hello world");
char *data = array2.data();
qDebug() << array2.data()[0] << array2.data()[1] << array2.data(); //结果:h e hello world
qDebug() << data[0] << data[1] << data;  //结果:h e hello world

 4.2 QByteArray &QByteArray::fill(char ch, int size = -1)

  将字节数组的每个字节用ch填充,如果size不是默认值-1,则先将字节数组调整为指定size大小,再填充。

QByteArray array2("hello world");
qDebug() << array2;  //结果:"hello world"
array2.fill('m');
qDebug() << array2;  //结果:"mmmmmmmmmmm"
array2.fill('m', 5);
qDebug() << array2;  //结果:"mmmmm"

 4.3 int QByteArray::indexOf(const QByteArray &ba, int from = 0) const

  搜索并返回字节数组中第一次出现指定字节数组ba的索引位置,位置从索引from开始向后搜索。

QByteArray x("sticky question");
QByteArray y("sti");
x.indexOf(y);               // returns 0
x.indexOf(y, 1);            // returns 10
x.indexOf(y, 10);           // returns 10
x.indexOf(y, 11);           // 搜不到 returns -1

4.4 QByteArray QByteArray::left(int len) const

  从最左侧第一个字节开始向右截取len个字节。

QByteArray x("Pineapple");
QByteArray y = x.left(4); // y == "Pine"

附件:所有函数

https://zhuanlan.zhihu.com/p/51728642

原文地址:https://www.cnblogs.com/Mike2019/p/14183226.html