如何将十六进制字符串解释为C中的字符串

时间:2013-03-24 05:12:06

标签: c string hex string-concatenation

我有这些十六进制字符串:     0F54C47A     B97798C9     348C211B     0911F13F     416E9759

他们是五个人的结果     printf("%08X\n", sha_digest.Message_Digest[i]);调用我从0到4运行的地方。

我想连接这些字符串以制作一个大字符串,例如 0F54C47AB97798C9348C211B0911F13F416E9759并且能够使用char *变量引用该字符串。

有没有办法在C中完成这个?我知道C ++有选项,但我的程序是用C语言编写的。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在C中,字符串是字符数组,以null结尾。你可以做到的一种方法是

char buf[8 * 5 + 1];
char *p = buf;
buf[0] = 0;
for (int i = 0; i < 5; i++) { 
   sprintf(p, "%8x", sha_digest.Message_Digest[i]);
   p += 8;
}

答案 1 :(得分:0)

char buffer[41];

sprintf(buffer, "%08X%08X%08X%08X%08X", 
     sha_digest.Message_Digest[0],
     sha_digest.Message_Digest[1],
     sha_digest.Message_Digest[2],
     sha_digest.Message_Digest[3],
     sha_digest.Message_Digest[4]);

buffer是包含0F54C47AB97798C9348C211B0911F13F416E9759的C风格字符串。