使用’sprintf’将hex转换为字符串

我试图将数组转换为hex,然后将其放入一个字符串变量。 在以下循环中printf工作正常,但我不能正确使用sprintf。 如何将hex值作为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 } 

也许你需要:

 &hex_tmp[i * 2] 

还有一个更大的arrays。

存储为数字的字符与字符串不同:

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