gpt4 book ai didi

在 C 中使用 sprintf 复制十六进制值

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:20 25 4
gpt4 key购买 nike

从下面的代码中,我试图将结果 var 的结果转换为字符串 var,但到目前为止没有成功。怎么了?为什么我得不到正确的结果?如果我直接打印这个就可以了...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md5.h>

char *string = "stelios";
unsigned char s[MD5_DIGEST_LENGTH];
int main()
{
int i;
unsigned char result[MD5_DIGEST_LENGTH];

MD5(string, strlen(string), result);

// output
for(i = 0; i < MD5_DIGEST_LENGTH; i++){
sprintf(s,"%0x", result[i]);//
printf("%x",s[i]);
}
printf("\n%x",s);

return EXIT_SUCCESS;
}

最佳答案

试试这个:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md5.h>

char *string = "stelios";
char s[MD5_DIGEST_LENGTH * 2 + 1] = "";
int main()
{
int i;
unsigned char result[MD5_DIGEST_LENGTH];

MD5(string, strlen(string), result);

// output
for(i = 0; i < MD5_DIGEST_LENGTH; i++){
char temp[3];
sprintf(temp, "%02x", result[i]);
strcat(s, temp);
}
printf("Final Hex String: %s",s);

return EXIT_SUCCESS;
}

关于在 C 中使用 sprintf 复制十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998361/

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