如果QString str = "0xFFFF"
,如何将十六进制的文本表示形式转换为QByteArray?最后,我想从以下内容中获得相同内容:
QByteArray ba;
ba.resize(2);
ba[0] = 0xFF;
ba[1] = 0xFF;
答案 0 :(得分:3)
在任何一种情况下,最终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();