我传递了一个字节数组,然后使用 System.Buffer.BlockCopy 将其转换为基元数组。基本上我的代码如下所示:
void Convert(byte[] b)
{
int[] i1 = new int[100]; // real arrays much larger
double[] d1 = new double[100];
int iPos=0, iSize;
iSize = i1.Length * sizeof(int);
System.Buffer.BlockCopy(b, iPos, i1, 0, iSize);
iPos += iSize;
iSize = d1.Length * sizeof(double);
System.Buffer.BlockCopy(b, iPos, d1, 0, iSize);
iPos += iSize;
//etc: lots of arrays
b=null;
}
这是相当高效的,但它的内存使用量显然是我的字节数组大小的 2 倍,直到 b 被释放。
有没有办法直接将字节数组的部分转换为我的原始数组?一个不涉及复制数据(因此不会使内存使用量翻倍),并且可能更快?