2012-05-04 24 views
11

Me gustaría imprimir los siguientes datos hash. ¿Cómo debería hacerlo?Cómo imprimir char sin signo [] como HEX en 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?? 

Respuesta

15

El especificador de formato hexadecimal está esperando un único valor entero pero que está proporcionando en su lugar una serie de char. Lo que debe hacer es imprimir los valores char individualmente como valores hexadecimales.

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

Puesto que usted está usando C++, aunque se debe considerar el uso cout en lugar de printf (es más idiomático para C++.

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

Por qué C? ¿Por qué no en C++? – vidit

+2

@vidit el usuario dio las preguntas en términos de 'printf' así que decidí responder de esa manera. Ellos claramente tienen un poco de confusión en cuanto a cómo funciona' printf', y quería aclarar eso – JaredPar

+0

Ok Señor. Estaba pensando porque marcó C++ – vidit

Cuestiones relacionadas