根据作为QString输入的HEX值构造QByteArray

时间:2014-10-28 22:12:46

标签: qt

如果QString str = "0xFFFF",如何将十六进制的文本表示形式转换为QByteArray?最后,我想从以下内容中获得相同内容:

QByteArray ba;
ba.resize(2);
ba[0] = 0xFF;
ba[1] = 0xFF;

1 个答案:

答案 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();