【发布时间】:2014-11-04 02:57:33
【问题描述】:
我遇到过这段代码here。
result = HMAC(EVP_md5(), key, 32, data, 28, NULL, NULL);
for (i = 0; i < result_len; i++) {
sprintf(&(res_hexstring[i * 2]), "%02x", result[i]);
}
循环有什么作用?特别是&(res_hexstring[i * 2]) 是什么意思?您不能将结果作为数组进行迭代吗?为什么是整数?
【问题讨论】:
-
作为十六进制字符串字符的八位字节表示为
00到FF。您可以一次只吃一点点,但这样做有什么意义,相当更多的工作没有收获?您可以假设res_hexstring除了转储到控制台之外的其他地方使用,否则是的,sprintf毫无意义,可以使用printf完成。 -
为什么不能只使用 printf?