从作为 QString 输入的 HEX 值构造 QByteArray
Posted
技术标签:
【中文标题】从作为 QString 输入的 HEX 值构造 QByteArray【英文标题】:Construct a QByteArray from a HEX value entered as a QString 【发布时间】:2014-10-28 22:12:46 【问题描述】:如果QString str = "0xFFFF"
,如何将这个十六进制的文本表示转换为QByteArray?最后,我希望得到与以下内容相同的结果:
QByteArray ba;
ba.resize(2);
ba[0] = 0xFF;
ba[1] = 0xFF;
【问题讨论】:
【参考方案1】:在任何一种情况下,最终的QByteArray
都是十六进制值序列,即FFFF
。转换应应用于 that 字符串。鉴于此,如果您的输入字符串以0x
开头,您应该通过mid()
删除它。
这是一个代码 sn-p,它比较了两种方法的结果:用十六进制值手动填充 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();
【讨论】:
以上是关于从作为 QString 输入的 HEX 值构造 QByteArray的主要内容,如果未能解决你的问题,请参考以下文章
《Qt数据类型》--QByteArray,QString,int,hex之间的转化