我试图将数组转换为十六进制,然后将其放入一个字符串变量.在以下循环中printf工作正常,但我不能正确使用sprintf.如何将十六进制值作为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!
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含二进制加密字符串的char*(使用AES-128这是加密输出).
我需要弄清楚char*中有多少字节(因为AES 128使用16字节的块大小,它应该是16的倍数).确定包含二进制数据的char*大小的最佳方法是什么?Strlen和sizeof似乎没有在这里产生正确的结果(结果不是16的增量).当我在0和一些任意大数字之间循环使用i时,我可以通过简单地执行printf("%d",ptr [i])来遍历字符串的ascii值.
这里有什么想法?