从作为 QString 输入的十六进制值构造 QByteArray

oqr*_*xke 5 qt

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

QByteArray ba;
ba.resize(2);
ba[0] = 0xFF;
ba[1] = 0xFF;
Run Code Online (Sandbox Code Playgroud)

BaC*_*Zzo 5

在任何一种情况下,最终结果QByteArray都是一系列十六进制值,即FFFF。应该对该字符串应用转换。鉴于此,如果您的输入字符串前面带有0x,您应该通过 删除它mid()。

下面是一个代码片段,它比较了两种方法的结果:手动填充QByteArray十六进制值或从 a 转换十六进制值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();
Run Code Online (Sandbox Code Playgroud)