3

Qt を使用し、チェックサム値を 16 進数で暗号化/復号化する既存の方法を持つソフトウェアを使用しています。現在、base 64 にあるいくつかのチェックサム値に遭遇しました。base64 チェックサムに対して同じことを行うためにホイールを再発明する代わりに、Qt または KDE を使用して base64 値を 16 進値に変換する方法があるかどうか疑問に思っていました。ライブラリ . このようにして、ほぼ同様のタスクを実行するために半分重複したコードを書くことから自分自身を救うことができます。

これがどのように機能するかは次のとおりです。

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: Qt5QString::toLatin1()では の代わりに使用する必要がありQString::toAscii()ます。

于 2012-07-02T07:19:10.910 に答える