将 C 字节数组转换为 C 字符串

新手上路,请多包涵

我正在尝试将字节数组转换为 C 中的字符串,但我无法弄清楚。

我有一个在 C++ 中对我有用的示例,但我需要将其转换为 C。

C++代码如下:

 #include <iostream>
#include <string>

typedef unsigned char BYTE;

int main(int argc, char *argv[])
{
  BYTE byteArray[5] = { 0x48, 0x65, 0x6C, 0x6C, 0x6F };
  std::string s(reinterpret_cast<char*>(byteArray), sizeof(byteArray));
  std::cout << s << std::endl;

  return EXIT_SUCCESS;
}

谁能指出我正确的方向?

原文由 Dan James Palmer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 554
1 个回答

C 中的 字符串是以零结尾的字节数组。因此,您需要做的就是将数组复制到一个新缓冲区中,该缓冲区有足够的空间容纳尾随零字节:

 #include <string.h>
#include <stdio.h>

typedef unsigned char BYTE;

int main() {
    BYTE byteArray[5] = { 0x48, 0x65, 0x6C, 0x6C, 0x6F };
    char str[(sizeof byteArray) + 1];
    memcpy(str, byteArray, sizeof byteArray);
    str[sizeof byteArray] = 0; // Null termination.
    printf("%s\n", str);
}

原文由 Konrad Rudolph 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题