Convertir un hex en una cadena usando ‘sprintf’

Estoy tratando de convertir una matriz en hexadecimal y luego ponerla en una variable de cadena. En el siguiente bucle, el printf funciona bien, pero no puedo usar sprintf correctamente. ¿Cómo puedo rellenar los valores hexadecimales en la matriz como ASCII?

static unsigned char digest[16]; static unsigned char hex_tmp[16]; for (i = 0; i < 16; i++) { printf("%02x",digest[i]); <--- WORKS sprintf(&hex_tmp[i], "%02x", digest[i]); <--- DOES NOT WORK! } 

 static unsigned char digest[16]; static char hex_tmp[33]; for (i = 0; i < 16; i++) { printf("%02x",digest[i]); <--- WORKS sprintf(&hex_tmp[i*2],"%02x", digest[i]); <--- WORKS NOW } 

Quizás necesites:

 &hex_tmp[i * 2] 

Y también una matriz más grande.

Un char almacenado como numérico no es lo mismo que una cadena:

 unsigned char i = 255; unsigned char* str = "FF"; unsigned char arr1[] = { 'F', 'F', '\0' }; unsigned char arr2[] = { 70, 70, 0 };