c++ - 将 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;
}
谁能指出我正确的方向?
解决方案
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);
}
推荐阅读
- c - C中的数组类型转换
- java - 我如何在没有主方法的情况下使用 charAt()
- vb6 - 如何将鼠标光标设置到标签上的指定位置?
- python - Python 3.8.5 和 IDL8.8
- python - 如何在 tkinter Treeview 中动态应用行高
- python - 在虚拟环境中创建环境变量?
- amazon-web-services - 如何生成与任何控制台操作等效的 AWS CLI
- tensorflow - Tensorflow:如何通过修剪阻止小值泄漏?
- tensorflow - 如何使用训练有素的估计器在张量流中进行预测
- reactjs - Emotion 11 使用打字稿访问主题对象并做出反应