我有一个包含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 ++方面进行了检查,并且正确地返回了值。有什么想法吗?
答案 0 :(得分:0)
使用:
pingdata[i, j] = (byte)Marshal.ReadByte((IntPtr)(ptr.ToInt64() + (i * d2 + j)));
解决了这个问题。