gpt4 book ai didi

c++ - 将十六进制 charArray 转换为 String

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:15 24 4
gpt4 key购买 nike

我有一个严重而恼人的问题,请帮忙

mdContext->digest[i] 是一个具有十六进制值的无符号字符数组,所以

for (i = 0; i < 16; i++)
printf ("%02x", mdContext->digest[i]);

打印 900150983cd24fb0d6963f7d28e17f72

现在....我想在一个字符数组中获取这个值,即如果我这样做

printf("%s",ArrayConverted);

我想打印上面的字符串...请帮我做这件事

我尝试过的事情

试验-1

unsigned char in[64]=0;
int tempValue[64];


for (i = 0; i < 16; i++){
sprintf(&tempValue[i],"%02x", (unsigned char)mdContext->digest[i]);
in[i]=(unsigned char)tempValue[i];
}

printf("%s\n\n\n",in);

这打印90593d4bd9372e77 但原始内容是 900150983cd24fb0d6963f7d28e17f72

所以它跳过了中间的许多字符......请帮我把这个十六进制的 Char 数组转换成一个 String

最佳答案

char tempValue[33]; // 32 hex digits + 0-terminator
int i;
for (i = 0; i < 16; ++i)
sprintf(tempValue + 2*i, "%02x", (unsigned char)mdContext->digest[i]);

每个字节需要两个十六进制数字 - 所以调整 sprintf 的起始位置为 2*i

tempValue + 2*i 等同于 &tempValue[2*i]

编辑:正确的 c++ 版本。

std::stringstream s;
for (int i = 0; i < 16; ++i)
s << std::hex << std::setfill('0') << std::setw(2) << (unsigned short) mdContext->digest[i];
std::cout << s.str() << std::endl;

关于c++ - 将十六进制 charArray 转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285386/

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