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是一种更好的方法.