3

我正在开发一个使用 Qt 并具有现有方法来加密/解密十六进制校验和值的软件。目前,我遇到了一些以 64 为基数的校验和值。与其重新发明轮子为 base64 校验和做同样的事情,我想知道是否有办法使用 Qt 或 KDE 将 base64 值转换为十六进制值库。这样我就可以避免编写半重复的代码来完成几乎类似的任务。

这是它应该如何工作的:

Input: VO2S9pgCq1lqgTFTKssVj6amn0npNdagtjI8ziDtiRQ=
Output: 54ed92f69802ab596a8131532acb158fa6a69f49e935d6a0b6323cce20ed8914

输入包含在 QString 中。此外,如果 Qt/KDE 中没有内置支持,您能否建议我使用 C++ 中的方法?

4

1 回答 1

5

这是我现在尝试的:

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

 QString res(ba.toHex());

 qDebug() << res;

可能有更正确的方法可以做到这一点,但我现在太困了,对不起。

作为一个函数:

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

     return res;      
 }

或者干脆..

 QString base64ToHex(const QString& b64){
     return QString(QByteArray::fromBase64(b64.toAscii()).toHex());
 }

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

于 2012-07-02T07:19:10.910 回答