-2

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

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

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

有没有办法在 C 中实现这一点?我知道 C++ 有选项,但我的程序是用 C 编写的。

非常感谢您提供的所有帮助。

4

2 回答 2

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;
}
于 2013-03-24T05:16:15.733 回答
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是一个 C 风格的字符串,包含0F54C47AB97798C9348C211B0911F13F416E9759.

于 2013-03-24T05:17:05.493 回答