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

标签 c# c++ c++-cli

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

C++ CLR 代码:

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

C#代码:

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

在 TestByteArray() 函数中,我需要将 byteArray 转换为 char*,以便我可以在 native C++ 代码中使用它。我怎样才能进行这样的转换?

最佳答案

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...
}

关于c# - 如何在 C++ CLR 中将数组 <System::Byte> 转换为 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7707985/

相关文章:

c# - 从 javascript 或代码隐藏中禁用 'remember password' 提示

c++ - Release .exe for vs2012 c++ 请求MSVCR110.dll

c++ - 无法将 'this' 指针从 'std::stack<_Ty>' 转换为 'std::stack<_Ty> &'

multithreading - C++/CLI 线程 - InvalidProgramException

c++ - 重载 == 并与 nullptr 进行比较?

c# - 我怎么知道一个类型是否可以使用 Json.NET 转换?

c# - 为什么这个 "finally"会执行呢?

c# - 未指定或无效的 Oracle UDTs 自定义类型映射

c++ - MPI_Irecv 没有收到循环后发送的消息

c++ - 有人可以为我澄清 C++ 中的运算符重载吗?