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

  • 本文关键字:HEX QByteArray QString qt
  • 更新时间 :
  • 英文 :


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

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

在任何一种情况下,最终的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();

最新更新