1
如果QString str = "0xFFFF"
,如何將這個十六進制文本表示形式轉換爲QByteArray?最後,我想有相同的東西,我從下面得到:構造一個QByteArray作爲QString輸入的十六進制值
QByteArray ba;
ba.resize(2);
ba[0] = 0xFF;
ba[1] = 0xFF;
如果QString str = "0xFFFF"
,如何將這個十六進制文本表示形式轉換爲QByteArray?最後,我想有相同的東西,我從下面得到:構造一個QByteArray作爲QString輸入的十六進制值
QByteArray ba;
ba.resize(2);
ba[0] = 0xFF;
ba[1] = 0xFF;
在這兩種情況下,最終QByteArray
是十六進制值序列,即FFFF
。轉換應該應用即字符串。鑑於此,如果您的輸入字符串前面提供了0x
,則應通過mid()
將其清除。
這裏是一個代碼段,其中兩種方法的結果進行了比較:手動填充所述QByteArray
與十六進制值或從QString
轉換十六進制值:
QByteArray array1;
array1.resize(2);
array1[0] = 0xFF;
array1[1] = 0xFF;
QString str = "0xFFFF";
QString value = str.mid(2); // "FFFF" <- just the hex values!
QByteArray array2 = QByteArray::fromHex(value.toLatin1());
qDebug() << array1; // not printable chars
qDebug() << array2;
qDebug() << array1.toHex(); // to have a printable form use "toHex()"!
qDebug() << array2.toHex();