0
点赞
收藏
分享

微信扫一扫

【QT】【bug解决】【QByteArray转QString】

蒸熟的土豆 2022-01-31 阅读 142

QT的直接转换有bug。

Widget::Widget(QWidget *parent):QWidget(parent){
    QFile A("C:/z.zip");
    A.open(QIODevice::ReadOnly);
    QByteArray X=A.readAll();
    QString Y=X;
    qDebug()<<X;
    qDebug()<<Y;
}

运行后会发现,在转QString时,\x00后面的内容丢失。

QByteArray:PK\x03\x04\x14\x00\x00\x00\b\x00\xE8……

QString:PK\x03\x04\x14

对此,解决方式是:

QString QByteArray_TO_QString(QByteArray BYTE){
    return QString::fromLatin1(BYTE.toHex());
}

QByteArray QString_TO_QByteArray(QString STR){
    return QByteArray::fromHex(STR.toLatin1());
}

Widget::Widget(QWidget *parent):QWidget(parent){
    QFile A("C:/z.zip");
    A.open(QIODevice::ReadOnly);
    QByteArray X=A.readAll();
    QString Y=QByteArray_TO_QString(X);
    QByteArray Z=QString_TO_QByteArray(Y);
    qDebug()<<X;
    qDebug()<<Y;
    qDebug()<<Z;
}

运行后:

X:QByteArray:PK\x03\x04\x14\x00\x00\x00\b\x00\xE8……

Y:QString:504b03041400000008……

Z:QByteArray:PK\x03\x04\x14\x00\x00\x00\b\x00\xE8……

成功。这样,我将QByteArray转成QString,放入JSON中用来TCP通讯,从而实现文件传输。

举报

相关推荐

0 条评论