如何在 C++ CLR 中将数组<System::Byte> 转换为 char*?

Posted

技术标签:

【中文标题】如何在 C++ CLR 中将数组<System::Byte> 转换为 char*?【英文标题】:How to convert array<System::Byte> to char* in C++ CLR? 【发布时间】:2011-10-10 02:24:07 【问题描述】:

在我的项目中,我将一个字节[] 从 C# 传递给 C++ CLR 函数。

C++ CLR 代码:

void TestByteArray(array<System::Byte>^ byteArray)

    ...

C#代码:

byte[] bytes = new byte[128];
...
TestByteArray(bytes);

在 TestByteArray() 函数中,我需要将 byteArray 转换为 char*,以便可以在原生 C++ 代码中使用它。我该如何进行这种转换?

【问题讨论】:

【参考方案1】:
void TestByteArray(array<System::Byte>^ byteArray)

    pin_ptr<System::Byte> p = &byteArray[0];
    unsigned char* pby = p;
    char* pch = reinterpret_cast<char*>(pby);

    // use it...

【讨论】:

【参考方案2】:

您正在寻找Encoding.GetChars() 方法

【讨论】:

不,那将用于wchar_t(C++ 等价于System::Char)。

以上是关于如何在 C++ CLR 中将数组<System::Byte> 转换为 char*?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中将字符串转换为 char 数组?

如何在 C++ 中将字符串数组转换为整数数组?

如何在 C++ 中将 OpenCV 2D 矩阵转换为 1D 数组?

C,如何将多维数组传递给 CLR/类库项目中的函数

在 C# 库和 C++ (CLR) 之间传递对象

如何在 C++ 中将数字字符串拆分为数组? [复制]