如何在 C 编程中循环遍历字节数组并将其存储为十六进制字符串
How to loop through a byte array in C programming and store in a string as Hexadecimal
如何在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;
}
我在将十六进制字符串连接成单个字符串时遇到问题 return。
你可以像这样使用指针
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编程中循环遍历字节数组并将每个字节元素的十六进制输出以十六进制形式存储在字符串中。我正在使用 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;
}
我在将十六进制字符串连接成单个字符串时遇到问题 return。
你可以像这样使用指针
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;
}