【问题标题】:Construct a QByteArray from a HEX value entered as a QString从作为 QString 输入的 HEX 值构造 QByteArray
【发布时间】:2014-10-28 22:12:46
【问题描述】:

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

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

【问题讨论】:

    标签: qt


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 2012-12-17
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2018-05-06
      • 2012-07-02
      • 2017-08-31
      • 1970-01-01
      相关资源
      最近更新 更多