作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 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/
我是一名优秀的程序员,十分优秀!