J'ai un problème étrange lors de l'utilisation de la méthode at() de std :: string. Je voudrais calculer md5 hash pour une chaîne donnée en utilisant cette bibliothèque: http://sourceforge.net/projects/libmd5-rfc/files/ Hash est calculé correctement, mais il y a un problème avec l'impression de façon humaine. La sortie est:Pourquoi ma valeur MD5 est-elle imprimée avec des caractères "f" supplémentaires?
af04084897ebbf299b04082d105ab724
ffffffaf040848ffffff97ffffffebffffffbf29ffffff9b04082d105affffffb724
code
est:
#include <stdio.h>
#include<string>
#include<iostream>
extern "C" {
#include "md5.h"
}
int main()
{
md5_state_t state;
md5_byte_t digest[16];
std::string callid("[email protected]");
md5_init(&state);
md5_append(&state, (const md5_byte_t*)callid.c_str(), callid.length());
std::string callid_digest((const char*)digest, 16);
for(int i = 0; i < 16; ++i) {
printf("%02x", digest[i]);
}
printf("\n");
for(int i = 0; i < 16; ++i) {
const char c = callid_digest.at(i);
printf("%02x", c);
}
printf("\n");
}
D'où viennent les caractères "f" vient?
pejotr, je l'ai acheté le code sur, car il est considéré comme mieux pour les questions soient aussi autonome que possible. J'ai également changé le titre pour le rendre plus indicatif du problème. J'espère que ça ne vous dérange pas. À votre santé. – paxdiablo