将C ++字节数组转换为C字符串 [英] Convert C++ byte array to a C string

查看:502
本文介绍了将C ++字节数组转换为C字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将字节数组转换为C语言中的字符串,但我不太清楚。

I'm trying to convert a byte array to a string in C but I can't quite figure it out.

我有一个示例说明了我使用C ++,但我需要将其转换为C。

I have an example of what works for me in C++ but I need to convert it to 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;
}

有人可以指出我正确的方向吗?

Can anyone point me in the right direction?

推荐答案

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

Strings in C are byte arrays which are zero-terminated. So all you need to do is copy the array into a new buffer with sufficient space for a trailing zero byte:

#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字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆