2014-10-28 530 views

回答

2

在這兩種情況下,最終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();