【问题标题】:How do you convert a base64 value to a hex value using Qt /KDE?如何使用 Qt /KDE 将 base64 值转换为十六进制值?
【发布时间】:2012-07-02 14:18:05
【问题描述】:

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

这是它的工作原理:

Input: VO2S9pgCq1lqgTFTKssVj6amn0npNdagtjI8ziDtiRQ=
Output: 54ed92f69802ab596a8131532acb158fa6a69f49e935d6a0b6323cce20ed8914

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

【问题讨论】:

  • 抱歉让我编辑问题。

标签: qt cryptography kde


【解决方案1】:

这是我现在尝试的:

 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2020-11-15
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    相关资源
    最近更新 更多