1. 初始化編碼
2. 訪問與賦值字符串
3. 添加、刪除、插入與替換操做qt
4. 查找與比較string
5. 數據轉換與處理bug
訪問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()<<"[]"<<ba[2]; //[] d
qDebug()<<"at()"<<ba.at(2); //at() d
qDebug()<<"data()"<<ba.data()[2]; //data() d
qDebug()<<"constData()"<<ba.constData()[2]; //constData() d
qDebug()<<"constData()"<<ba.constData()[5]; //constData() 1方法
把Hex編碼轉換爲char存儲到QByteArray:數據
QByteArray text = QByteArray::fromHex("517420697320677265617421");
text.data(); // returns "Qt is great!"集合
把QByteArray轉爲Hex編碼:di
QByteArray ba;
ba.resize(3);
ba[0] = 0x30;
ba[1] = 0x31;
ba[2] = 0x32;
qDebug() << ba.toHex(); //return "303132"
儘管QByteArray是一個集合,但也能夠做爲一個特殊形式的數值用,其靈活的轉換格式,可大大方便各類格式數據轉換與顯示的需求。如顯示二進制和十六進制、顯示科學計數和指定小數位的數值。示例以下:
把單個字符轉爲2-36進制數據格式:
int n = 63;
qDebug()<<QByteArray::number(n); // returns "63"
qDebug()<<QByteArray::number(n, 16); // returns "3f"
qDebug()<<QByteArray::number(n, 16).toUpper(); // returns "3F"
qDebug()<<QByteArray::number(n, 2); // returns "111111"
qDebug()<<QByteArray::number(n, 8); // returns "77"
按照指定進制格式直接複製,其中n能夠是各種常見數值類型:
QByteArray ba;
int n = 63;
ba.setNum(n); // ba == "63"
ba.setNum(n, 16); // ba == "3f"
把數值按指定格式和小數位轉換輸出,小數位四捨五入:
QByteArray ba1 = QByteArray::number(12.3456, 'E', 3);
QByteArray ba2 = QByteArray::number(12.3456, 'f', 3);
qDebug()<<ba1; // returns "1.235E+01"
qDebug()<<ba2; // returns "12.346"
QByteArray若爲數值,可經過to**方法轉爲各類類型數據,示例以下:
QByteArray strInt("1234");
bool ok0;
qDebug() << strInt.toInt(); // return 1234
qDebug() << strInt.toInt(&ok0,16); // return 4660, 默認把strInt做爲16進制的1234,對應十進制數值爲4660
QByteArray string("1234.56");
bool ok1;
qDebug() << string.toInt(); // return 0, 小數均視爲0
qDebug() << string.toInt(&ok1,16); // return 0, 小數均視爲0
qDebug() << string.toFloat(); // return 1234.56
qDebug() << string.toDouble(); // return 1234.56
QByteArray str("FF");
bool ok2;
qDebug() << str.toInt(&ok2, 16); // return 255, ok2 == true
qDebug() << str.toInt(&ok2, 10); // return 0, ok == false, 轉爲十進制失敗
QByteArray若爲帶大小寫的字符串,可經過toUpper()和toLower()方法實現大小寫轉換,示例以下:
QByteArray x("Qt by THE QT COMPANY");
QByteArray y = x.toLower();
// y == "qt by the qt company"
QByteArray z = x.toUpper();// z == "QT BY THE QT COMPANY"