qt base64编码/解码添加转义字符

问题描述 投票:0回答:1

我有一个方法返回一个unsigned char *数组,我试图将其编码为base64并稍后解码。所以我正在做的如下:

unsigned char * val = myMethod();
char * encodedMsg = reinterpret_cast<char *>(val);
std::cout << "Returned message: " << val << std::endl;
QByteArray raw = QByteArray(encodedMsg).toBase64(QByteArray::Base64Encoding | QByteArray::OmitTrailingEquals);

该方法的输出是\u0001z\ri!i,,编码值是XHUwMDAxelxyaSFpLA

现在,我将其解码如下:

QByteArray decoded = QByteArray::fromBase64(raw,
                            QByteArray::Base64Encoding | QByteArray::OmitTrailingEquals);

qDebug() << decoded;

现在这将返回\\u0001z\\ri!i,。请注意,斜杠已被转义。

我知道我可以将其替换为后期处理步骤但是有办法避免这种情况。也许我正在使用编码/解码错误?

c++ qt encoding base64 decoding
1个回答
0
投票

试试如下,

Base 64编码:

unsigned char* Ciphertext = Encypt(); QByteArray qByteArray((char*)(Ciphertext),(int)strlen((char *)Ciphertext)); qDebug()<<"Ciphertext : "<< qByteArray.toBase64();

输出:

Ciphertext :  "WLdC+ri94z940BiAven6qXQH6rPbE64nQXt5aFByLGPFh1n//tOGLG02zBSoZ79qMA"

Base 64解码:

QString data = QString::fromLatin1(QByteArray::fromBase64(Base64QByteArray.toBase64()).data());

在我的情况下,我使用此base64转换进行AES加密,使其适合您的。

© www.soinside.com 2019 - 2024. All rights reserved.