我正在使用一个使用Qt的软件,并且现有方法以十六进制加密/解密校验和值。目前,我遇到了一些基本64的校验和值。我不知道是否有一种方法可以使用Qt或KDE将base64值转换为十六进制值,而不是重新发明轮子来为base64校验和执行相同的操作。图书馆。这样我就可以避免编写半重复的代码来执行几乎相似的任务。
以下是它应该如何运作:
Input: VO2S9pgCq1lqgTFTKssVj6amn0npNdagtjI8ziDtiRQ=
Output: 54ed92f69802ab596a8131532acb158fa6a69f49e935d6a0b6323cce20ed8914
输入包含在QString中。 如果在Qt / KDE中没有内置支持,你能建议我用C ++编写一个方法吗?
答案 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()
。