将UInt8 C ++值转换为C#字节数组

时间:2017-01-23 17:54:10

标签: c# c++ arrays type-conversion marshalling

我有一个包含UInt8值的1维C ++数组 - 我想转换这些值并将它们放入2D C#byte数组中。目前,我的代码给了我不正确的值。这是我的代码:

IntPtr ptr = GetDataFromCPPSide();    

byte[,] data = new byte[dimension1, dimension2];
for(int i = 0; i < dimension1; i ++)
{
    for(int j = 0; j < dimension2; j++)
    {
        data[i, j] = Marshal.ReadByte((IntPtr)(ptr.ToInt64() + j + i * dimension2) * 1));
    }
}

现在这只能正确转换一些值。我确定它与我在for循环中转换值的方式有关。我已经对C ++方面进行了检查,并且正确地返回了值。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用:

pingdata[i, j] = (byte)Marshal.ReadByte((IntPtr)(ptr.ToInt64() + (i * d2 + j)));

解决了这个问题。