Estoy tratando de imprimir los resultados de un hash MD5 en la consola y funciona en su mayor parte. Para garantizar la exactitud, utilicé una calculadora MD5 en línea para comparar los resultados. La mayoría de los caracteres son iguales, pero faltan algunos en el mío y todos son ceros a la izquierda.
Dejame explicar. El resultado es un char sin firmar de 16 bytes *. Imprimo cada uno de estos bytes uno por uno. Cada byte imprime DOS caracteres en la pantalla. Sin embargo, si el primer carácter de los dos es un cero, no imprime el cero.
printk("%x", result);
El resultado es de tipo char sin firmar*. ¿Lo estoy formateando correctamente o me estoy perdiendo algo?
aschepler
Usar "%02x"
.
Los dos significa que siempre desea que la salida tenga (al menos) dos caracteres de ancho.
El cero significa que si es necesario rellenar, usar ceros en lugar de espacios.
result
es un puntero, use un bucle para imprimir todos los dígitos:
int i;
for (i = 0; i < 16; i++) {
printf("%02x", result[i]);
}
-
dejé fuera el [i] en mi publicación por accidente. ¡Aunque gracias por señalarlo!
– Gregory-Tortuga
22 de agosto de 2012 a las 1:55
No es ni remotamente similar a esa otra pregunta, ya que la otra pregunta prohíbe familia de funciones printf y esta lo requiere.
– dave
22 de agosto de 2012 a las 0:49