是否可以将无符号字符数组表示为字符串?
当我搜索它时,我发现只有memset()能够做到这一点(但是逐个字符).假设这不是正确的方法,有没有办法进行转换?
上下文:我正在尝试存储加密哈希函数的输出,该函数恰好是无符号字符数组.
例如:
unsigned char data[N]; ...
for(i=0;i<N;i++) printf("%x",data[i]);
Run Code Online (Sandbox Code Playgroud)
我的目标是将数据表示为String(%s),而不是每个元素访问它.因为我需要将哈希的输出作为字符串进行进一步处理.
谢谢!
for*_*rir 19
那么,根据您的更新,您是在谈论尝试将无符号字符串缓冲区转换为十六进制解释,如下所示:
#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;
}
Run Code Online (Sandbox Code Playgroud)
哪个输出:
0102030405060708090A
Run Code Online (Sandbox Code Playgroud)