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

Converting UInt8 C++ values to C# byte array

本文关键字:字节 字节数 数组 转换 UInt8 C++      更新时间:2023-10-16

我有一个包含UInt8值的一维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++端进行了检查,并且值已正确返回。有什么想法吗?

使用:

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

修复了该问题。