【问题标题】:Preserve QbyteArray to Qstring将 QbyteArray 保留到 Qstring
【发布时间】:2018-12-22 13:24:36
【问题描述】:

我想像 qDebug() 那样显示 QbyteArray 的值。

qDebug()<<byteArray    ===  Displays -> "\x8E\xA9\xF3\xA5"

你如何将这个 QbyteArray 抓取到 QString 中,当我在网上找到转换时,它会给我“????”作为输出。

我希望 QString 的内容与 QDebug() 的输出相同;

"\x8E\xA9\xF3\xA5"

这样 QString 字符串将包含 "\x8E\xA9\xF3\xA5"

【问题讨论】:

    标签: c++ qt qt5 qstring qbytearray


    【解决方案1】:

    使用构造函数构建一个 QDebug 对象:

    QDebug::QDebug(QString *string)

    构造一个写入给定字符串的调试流。

    例子:

    #include <QApplication>
    #include <QDebug>
    #include <QLabel>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        QLabel label;
        QByteArray ba("\x8E\xA9\xF3\xA5");
        QString res;
        QDebug db(&res);
        db << ba;
        label.setText(res);
        label.show();
    
        return a.exec();
    }
    


    更新:

    没有“\x”,使用 toHex():

    #include <QApplication>
    #include <QLabel>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        QLabel label;
        QByteArray ba("\x8E\xA9\xF3\xA5");
        label.setText(ba.toHex());
        label.show();
    
        return a.exec();
    }
    

    【讨论】:

    • 非常感谢你帮助了很多你介意后续问题吗?是否有删除“\ x”的东方式,这样它就可以离开“8E A9 F3 A5”而无需手动操作?再次非常感谢您。
    • @Jack mmm,这更容易,你为什么不从一开始就指出这一点?
    • 我知道这可能是一个迟到的回复,但非常感谢你,这就是我实际所做的:)
    • @Jack 我建议您考虑花时间回复,因为我们会花时间帮助您。 :)
    猜你喜欢
    • 2012-12-17
    • 2013-12-25
    • 2016-11-27
    • 2017-11-04
    • 2016-10-14
    • 2012-07-02
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多