1. ホーム
  2. c++

[解決済み] Qt C++のQStringからQByteArrayへの変換機能

2022-02-18 21:09:10

質問

暗号化/復号化プログラムを作成し、暗号化時に暗号化されたQByteArrayをテキストファイルに保存しています。

復号化するときに、それを取り出して復号化メソッドに入れました。問題は、それをQByteArrayに変換する方法が必要なことです。 形式を変えずに でないと、うまく復号化できません。つまり、ファイルから1234という暗号化された値が得られたとして、それをQByteArrayに変換するために、次のようにします。 1234.toLatin1() というメッセージが表示され、値が変わってしまい、復号化できません。何か提案はありますか?

私のコード

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;

解決方法は?

を使えばいいんだろうけど。

QString::fromUtf8(const QByteArray &str)

または

QString::QString(const QByteArray &ba)

を使用して、QByteArray を QString に変換し、QTextStream でファイルに書き込んでいます。
その後、QTextStreamでファイルを読み込んで使用します。

QString::toUtf8()

を使用して、QString を QByteArray に変換します。

QString::QString(const QByteArray &ba)

バイト配列baで初期化された文字列を構築します。与えられたバイト配列は、Unicodeに変換されます。 fromUtf8()を使用します。 .


追伸 QFile::writeとQFile::readを使うのが良い方法かもしれません。