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通讯,从而实现文件传输。