我有一个返回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,
。请注意,斜杠已被转义。
我知道我可以将其替换为后期处理步骤但是有办法避免这种情况。也许我正在使用编码/解码错误?
答案 0 :(得分: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加密,因此对您来说应该可以转换。