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()<
运行后会发现,在转QString时,x00后面的内容丢失。
QByteArray:PKx03x04x14x00x00x00bx00xE8……
QString:PKx03x04x14
对此,解决方式是:
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:QByteArray:PKx03x04x14x00x00x00bx00xE8……
Y:QString:504b03041400000008……
Z:QByteArray:PKx03x04x14x00x00x00bx00xE8……
成功。这样,我将QByteArray转成QString,放入JSON中用来TCP通讯,从而实现文件传输。



