Qt C ++ QString到QByteArray转换

时间:2016-06-14 03:40:09

标签: c++ qt qstring qbytearray

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

尝试解密时我检索它然后将其放入解密方法,问题是我需要一种方法将其转换为QByteArray 而不更改格式,否则它将无法正确解密。我的意思是,如果文件给了我加密值1234并且我通过转required|without_spaces|unique:user_detail,username 将其转换为QByteArray它会更改值并且解密不起作用。有什么建议吗?

我的代码:

1234.toLatin1()

4 个答案:

答案 0 :(得分:24)

我想你应该使用:

QString::fromUtf8(const QByteArray &str)

或者:

QString::QString(const QByteArray &ba)

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

QString::toUtf8()

将QString转换为QByteArray。

  

QString :: QString(const QByteArray& ba)

     

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


P.S: 也许使用QFile :: write和QFile :: read是一种更好的方式。

答案 1 :(得分:4)

尝试使用toLocal8Bit()..它可以正常使用

答案 2 :(得分:0)

或者直接使用b64 = data.toUtf8().toBase64();

首先使用toUtf8()将其转换为 QByteArray ,然后立即将其转换为toBase64()

答案 3 :(得分:-2)

如果我理解正确,文件中的文本将存储在QString内容中。我想你可以创建一个新的QByteArray。因为QByteArray的构造函数不允许将QString作为输入,所以我可能必须将QString附加到空QByteArray。

//After if:  
QByteArray tempContent();
tempContent.append(content);
QByteArray decrypted = crypto.Decrypt(tempContent, key);

我在Qt库中没有太多经验,但我希望这会有所帮助。