2

在 C++ 中,我有一个 AES 加密的 char*,在将其作为 URL 参数发送之前,我将其转换为它的 HEX 表示,就像在这个问题中所做的那样。现在,我想做相反的事情,即再次将此类十六进制转换回 char*。但是我在这里感到困惑-将 sprintf 与 %x 或 %s 一起使用会导致完全不同的值。我怎么能再次转换回来?谢谢...

4

1 回答 1

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 *.

于 2013-04-15T17:08:57.587 回答