在C ++中,我有一个AES加密的char *,在将其作为URL参数just as it is done in this question发送之前,我将其转换为其HEX表示形式。现在,我想做相反的事情,即将这样的十六进制转换回char *。但是我在这里感到困惑 - 使用带有%x或%s的sprintf将导致完全不同的值。我怎么能再把它转换回去?谢谢......
答案 0 :(得分:2)
您可以像这样使用sscanf()
:
#define LEN 16 /* 128/8 */
void aes_to_char(char *aes, char *res)
{
int i;
for (i = 0; i < LEN; i++) {
sscanf(aes, "%2hhx", &res[i]);
aes += 2;
}
}
"%2hhx"
表示“2个字符十六进制值,存储在char *
中。