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

时间:2012-07-02 07:01:24

标签: qt cryptography kde

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

以下是它应该如何运作:

Input: VO2S9pgCq1lqgTFTKssVj6amn0npNdagtjI8ziDtiRQ=
Output: 54ed92f69802ab596a8131532acb158fa6a69f49e935d6a0b6323cce20ed8914

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

1 个答案:

答案 0 :(得分: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()