1、概述
2、初始化
2.1 QByteArray()
QByteArray array1; array1.resize(4); array1[0] = 1; array1[1] = 2; array1[2] = 'm'; array1[3] = 'k'; qDebug() << array1; //結果: "\x01\x02mk"
2.2 QByteArray(const char *data, int size = -1)
size指定數據長度,默認為-1,那么QByteArray在構造的時候遇到第一個 '\0' 空字符時停止。所以如果你要賦值的數據中確實有 '\0' 的話,需要指定size。
QByteArray array2("hello\0world"); qDebug() << array2; //結果: "hello" QByteArray array2("hello\0world", 11); qDebug() << array2; //結果: "hello\x00world" 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"