const uint8 *的C ++到C#转换

时间:2017-09-27 23:42:38

标签: c# c++

有没有办法转换它:

function (const uint8* ptra, long src)
{

  const uint8* ptrb = ptra + src;
}

我尝试将每个const uint *转换为byte [],但我不确定如何处理ptra + src。 感谢

2 个答案:

答案 0 :(得分:1)

一种方法是使用包含a_and_b元素的单个数组

void SomeMethod(byte[] array, long offsetForBPart)
{
   //TODO is array big enough?
   var b0 = array[0+offsetForBPart]; 
   var b1 = array[1+offsetForBPart]; 
   var b2 = array[2+offsetForBPart]; 
   //You get the idea;
}

答案 1 :(得分:1)

在C#中,这通常不是最好的方法,但它确实特别回答了你的问题。您可以使用unsafefixed关键字,如下所示:

public unsafe void DoSomething(byte[] data, long src)
{
    fixed (byte* ptra = data)
    {
        byte* ptrb = ptra + src;
        // do your work... e.g.
        //   ptrb[0] = 10;
        //   ...is equivalent to...
        //   data[src] = 10;
    }
}

要使用此方法,您必须将代码编译为“不安全”。如果您正在使用Visual Studio,则可以在“解决方案资源管理器”中右键单击项目节点,然后选择“属性”。在属性页面的“构建”选项卡下,选中“允许不安全的代码”#39;框。