gpt4 book ai didi

c - 如何将无符号字符数组转换为C中的十六进制字符串

转载 作者:太空狗 更新时间:2023-10-29 17:05:08 26 4
gpt4 key购买 nike

是否可以将无符号字符数组表示为字符串?

当我搜索它时,我发现只有 memset() 能够做到这一点(但逐个字符)。假设这不是正确的方法,有没有办法进行转换?

上下文:我正在尝试存储密码哈希函数的输出,它恰好是一个无符号字符数组。
例如:

unsigned char data[N]; ...
for(i=0;i<N;i++) printf("%x",data[i]);

我的目标是将数据表示为字符串 (%s),而不是通过每个元素访问它。因为我需要将散列的输出作为字符串进行进一步处理。

谢谢!

最佳答案

因此,根据您的更新,您是在谈论尝试将 unsigned char 缓冲区转换为十六进制解释,如下所示:

#define bufferSize 10
int main() {
unsigned char buffer[bufferSize]={1,2,3,4,5,6,7,8,9,10};
char converted[bufferSize*2 + 1];
int i;

for(i=0;i<bufferSize;i++) {
sprintf(&converted[i*2], "%02X", buffer[i]);

/* equivalent using snprintf, notice len field keeps reducing
with each pass, to prevent overruns

snprintf(&converted[i*2], sizeof(converted)-(i*2),"%02X", buffer[i]);
*/

}
printf("%s\n", converted);

return 0;
}

哪些输出:

0102030405060708090A

关于c - 如何将无符号字符数组转换为C中的十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5661101/

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