QT读取二进制文件,然后将其转换为QString

时间:2014-10-01 15:39:45

标签: c++ qt file-io

我将QString保存在文件中:

QString str="blabla";
QByteArray _forWrite=QByteArray::fromHex(str.toLatin1());
f.write(_forWrite); // f is the file that is opened for writing.

然后当我读取文件时,我使用QFile :: readAll()来获取QByteArray,但我不知道如何将其转换为QString。

我尝试使用使用QByteArray的构造函数,但它没有用完。我也尝试使用QByteArray :: data()但结果相同。我做错了什么?

2 个答案:

答案 0 :(得分:2)

目前尚不清楚为什么要调用QByteArray :: fromHex。 toLatin1()已经返回QByteArray,其中每个符号用一个字节编码。

[<强>更新

你根本不应该致电QByteArray::fromHex,因为:

  

输入中的无效字符被跳过

无效字符是不是the numbers 0-9 and the letters a-f

的字符

答案 1 :(得分:1)

您可以使用QDataStream

#include <QApplication>

#include <QDataStream>
#include <QByteArray>
#include <QFile>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

        QString strToWrite = "blabla";
        QFile fileToWrite("file.bin");
        QDataStream dataStreamWriter(&fileToWrite);
        fileToWrite.open(QIODevice::WriteOnly);
        dataStreamWriter << strToWrite;
        fileToWrite.close();

        QString strToRead = "";
        QFile fileToRead("file.bin");
        QDataStream dataStreamReader(&fileToRead);
        fileToRead.open(QIODevice::ReadOnly);
        dataStreamReader >> strToRead;
        fileToRead.close();

        qDebug() << strToRead;

    return app.exec();
}
  

输出:&#34; blabla&#34;