如何使用Qt/KDE将base64值转换为十六进制值?

uye*_*tch 3 qt cryptography kde

我正在使用一个使用Qt的软件,并且现有方法以十六进制加密/解密校验和值.目前,我遇到了一些基本64的校验和值.我不知道是否有一种方法可以使用Qt或KDE将base64值转换为十六进制值,而不是重新发明轮子来为base64校验和执行相同的操作.图书馆.这样我就可以避免编写半重复的代码来执行几乎相似的任务.

这是它应该如何工作:

Input: VO2S9pgCq1lqgTFTKssVj6amn0npNdagtjI8ziDtiRQ=
Output: 54ed92f69802ab596a8131532acb158fa6a69f49e935d6a0b6323cce20ed8914
Run Code Online (Sandbox Code Playgroud)

输入包含在QString中.如果在Qt/KDE中没有内置支持,你能建议我用C++编写一个方法吗?

dsc*_*ulz 5

这就是我现在尝试的:

 QString b64("VO2S9pgCq1lqgTFTKssVj6amn0npNdagtjI8ziDtiRQ=");
 QByteArray ba = QByteArray::fromBase64(b64.toAscii());

 QString res(ba.toHex());

 qDebug() << res;
Run Code Online (Sandbox Code Playgroud)

可能有更正确的方法,但我现在太困了,抱歉.

作为一个功能:

 /// untested
 QString base64ToHex(const QString& b64){
     QByteArray ba = QByteArray::fromBase64(b64.toAscii());
     QString res(ba.toHex());

     return res;      
 }
Run Code Online (Sandbox Code Playgroud)

或者只是..

 QString base64ToHex(const QString& b64){
     return QString(QByteArray::fromBase64(b64.toAscii()).toHex());
 }
Run Code Online (Sandbox Code Playgroud)

编辑1:使用Qt5你应该使用QString::toLatin1()而不是QString::toAscii().