Qt C++ QString到QByteArray转换

Jam*_*mes 21 c++ qstring qt qbytearray

我创建了一个加密/解密程序,加密时我将加密的QByteArray存储在一个文本文件中.

在尝试解密时,我检索它然后将其放入解密方法,问题是我需要一种方法将其转换为QByteArray 而不更改格式,否则它将无法正确解密.我的意思是,如果文件给我一个1234的加密值,我将1234.toLatin1()它转换为QByteArray,它改变了值,解密不起作用.有什么建议?

我的代码:

QFile file(filename);
    QString encrypted;
    QString content;

    if (file.open(QIODevice::ReadOnly)) {
        QTextStream stream( &file );
        content = stream.readAll();
    }

    encrypted = content.replace("\n", "");

    qDebug() << encrypted; // Returns correct encrypted value

    QByteArray a;
    a += encrypted;

    qDebug() << "2 " + a; // Returns different value than previous qDebug()

    QByteArray decrypted = crypto.Decrypt(a, key);
    return decrypted;
Run Code Online (Sandbox Code Playgroud)

小智 30

我想你应该使用:

QString::fromUtf8(const QByteArray &str)
Run Code Online (Sandbox Code Playgroud)

要么:

QString::QString(const QByteArray &ba)
Run Code Online (Sandbox Code Playgroud)

将QByteArray转换为QString,然后通过QTextStream将其写入文件.
之后,通过QTextStream读取文件,使用:

QString::toUtf8()
Run Code Online (Sandbox Code Playgroud)

将QString转换为QByteArray.

QString :: QString(const QByteArray&ba)

构造一个用字节数组ba初始化的字符串.使用fromUtf8()将给定的字节数组转换为Unicode .


PS:也许使用QFile :: write和QFile :: read是一种更好的方法.

  • 这与标题所说的方向相反,对于寻找类似问题的人来说...... (2认同)

Ahm*_*sef 7

尝试使用 toLocal8Bit() .. 它对我来说很好用