如何在c ++中将数组字节转换为字符串?


byte S[5] = {0x48, 0x00, 0x65, 0x00, 0x6C}

我想知道如何将上面的字节数组转换为字符串。

将上述字节数组转换为字符串时,应输出"Hello"

我尝试了各种方法,但根本没有解决。

  1. String^ a = System::Convert::ToString(S);
  2. std::string s(reinterpret_cast <const char*> (S), 5);

输出一个完全不同的字符串。我该怎么办?

首先:该字节数组不包含"Hello"。它看起来像用 UTF-16 编码 5 个 Unicode 字符所需的 10 个字节的一半。

若要在 .Net 中的字节和字符串(包括 C++/CLI(之间进行转换,需要使用Encoding类。根据您在此处显示的数据,您需要使用Encoding::Unicode.若要从字节转换为字符串,请调用GetString

byte S[5] = {0x48, 0x00, 0x65, 0x00, 0x6C};

由于使用了[]语法,因此这是一个原始 C 数组,而不是 .Net 托管数组对象。因此,您需要使用采用原始指针和长度的重载。

String^ str = Encoding::Unicode->GetString(S, 5);

如果使用 .Net 数组对象,调用它会容易一些,因为数组类知道它的长度。

array<Byte>^ S = gcnew array<Byte> { 0x48, 0x00, 0x65, 0x00, 0x6C };
String^ str = Encoding::Unicode->GetString(S);

最新更新