在大多数情况下,我在python中工作,因此我非常欣赏repr()函数,当传递一个任意字节字符串时,它将打印出人类可读的十六进制格式。最近我在c中做了一些工作,我开始怀念pythonrepr函数。我一直在网上搜索类似的东西,最好是void buffrepr(const char * buff, const int size, char * result, const int resultSize)之类的,但我没有运气,有人知道一个简单的方法来做这个吗?

最佳答案

sprintf(字符*,”%x“,b);
你可以这样循环(非常简单):

void buffrepr(const char * buff, const int size, char * result, const int resultSize)
{
  while (size && resultSize)
  {
    int print_count = snprintf(result, resultSize, "%X", *buff);
    resultSize -= print_count;
    result += print_count;
    --size;
    ++buff;

    if (size && resultSize)
    {
      int print_count = snprintf(result, resultSize, " ");
      resultSize -= print_count;
      result += print_count;
    }
  }
}

08-24 22:35