gpt4 book ai didi

c - 如何在 C 编程中循环遍历字节数组并将其存储为十六进制字符串

转载 作者:行者123 更新时间:2023-11-30 21:29:32 25 4
gpt4 key购买 nike

如何在 C 编程中循环遍历字节数组,并将字符串中每个字节元素的十六进制输出存储为十六进制。我使用的是VS2005。

int main(int ArgC,char** ArgV)
{
char* string;
char stringSHA1[3];
char* stringSHA1Final = "";
Sha1Context sha1Context;
SHA1_HASH sha1Hash;
uint16_t i;

string = "Hello World";//ArgV[1];

Sha1Initialise( &sha1Context );
Sha1Update( &sha1Context, string, (uint32_t)strlen(string) );
Sha1Finalise( &sha1Context, &sha1Hash );

stringSHA1Final = malloc(sizeof(sha1Hash)*2 + 1);

for( i=0; i<sizeof(sha1Hash); i++ )
{
printf( "%2.2x", sha1Hash.bytes[i] );
sprintf_s(stringSHA1, 5, "%s%02x", "0x", sha1Hash.bytes[i] );
stringSHA1Final[i] = stringSHA1;
}
printf( stringSHA1Final );

return 0;
}

我在将十六进制字符串连接成单个字符串并返回时遇到了麻烦。

最佳答案

您可以使用指针,如下所示

char *sha1final = stringSHA1Final;
for (i = 0 ; i < sizeof(sha1Hash) ; i++)
{
int count;
count = snprintf(sha1final, 2, "%02x", sha1Hash.bytes[i]);
if (count < 0)
continue; /* You have to handle this, it's an error */
sha1final += count;
}

关于c - 如何在 C 编程中循环遍历字节数组并将其存储为十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30596017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com