2012-05-04 11 views
11

Vorrei stampare i seguenti dati con hash. Come dovrei farlo?Come stampare char unsigned [] come HEX in C++?

unsigned char hashedChars[32]; 
SHA256((const unsigned char*)data.c_str(), 
     data.length(), 
     hashedChars); 
printf("hashedChars: %X\n", hashedChars); // doesn't seem to work?? 

risposta

15

L'esagono di formato si aspetta un singolo valore intero, ma si sta fornendo invece una serie di char. Quello che devi fare è stampare i valori char individualmente come valori esadecimali.

printf("hashedChars: "); 
for (int i = 0; i < 32; i++) { 
    printf("%x", hashedChars[i]; 
} 
printf("\n"); 

Dal momento che si sta utilizzando C++ anche se si dovrebbe considerare l'utilizzo di cout invece di printf (è più idiomatico per C++.

cout << "hashedChars: "; 
for (int i = 0; i < 32; i++) { 
    cout << hex << hashedChars[i]; 
} 
cout << endl; 
+0

Perché C? Perché non C++? – vidit

+2

@vidit l'utente ha dato alle domande in termini di 'printf' quindi ho deciso di rispondere in questo modo.Hanno chiaramente un po 'di confusione su come' printf' funziona, e volevo chiarirlo su – JaredPar

+0

Ok Sir. Stavo solo pensando perché ha etichettato C++ – vidit