我正在尝试在C#中复制一个数组。 第一个数组的定义是: byte [] [] a包含8个数组,每个数组大小为8192个字节。 目标数组是大小为8192 * 8的1d数组
File file = new File("C:\\Users\\Felix\\Desktop\\cmploop.png");
其中b是目标数组。但是我一直在获取Object必须是一个基元数组。有谁知道为什么会这样?
答案 0 :(得分:9)
那是因为你没有一个值数组,你有一组数组值的引用。
byte[][]
类型与byte[,]
类型不同。第一个是数组(也称为锯齿状数组),第二个是二维数组。
您需要自己复制每个数组:
for (int i = 0; i < a.Length; i++) {
Buffer.BlockCopy(a[i], 0, b, 8192 * i, 8192);
}
答案 1 :(得分:1)
这是因为你的第一个输入数组不是基元数组。它是一个byte[]
数组的数组。
Buffer.BlockCopy(a(array of byte[]) , 0, b (array of byte),0,8192*8)
修正:
Buffer.BlockCopy(a.SelectMany().ToArray(), 0, b, 0, 8192*8)
但说实话,我认为你有同样的结果:
var b = a.SelectMany().ToArray();