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

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

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

上下文:我正在尝试存储加密哈希函数的输出,该函数恰好是无符号字符数组.
例如:

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

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

谢谢!

最佳答案
那么,根据您的更新,您是在谈论尝试将无符号字符串缓冲区转换为十六进制解释,如下所示:

#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中的十六进制字符串 - 代码日志