将byte [,]转换为byte []

dko*_*dko 1 .net image-processing

有没有人知道一种有效的方法将C#中的2d数组(非锯齿状)压平为1d再返回.我知道在后端C#必须保持它作为1d数组我想在后端1d数组上得到一个句柄,如果可能的话.

我之所以这样做是因为我希望能够在托管代码中将它作为2d,有时我想将其作为1d非托管dll导入代码(数字图像中的优化组件)处理是一个很好的例子).

Jon*_*eet 11

好吧,对象本身不是一个byte[],即使它将数据本身放在一个连续的内存块中.不要忘记阵列也知道它的等级和长度等.

但是,您可以使用Buffer.BlockCopy快速复制阵列.例如:

byte[,] source = new byte[5,5];
byte[] dest = new byte[source.Length];
Buffer.BlockCopy(source, 0, dest, 0, source.Length);
Run Code Online (Sandbox Code Playgroud)

请注意,最后一个参数是字节数,而不是数组元素的数量.

  • 我这样做只是为了引起注意这一事实:"Buffer.BlockCopy"的最后一个参数是要复制的__bytes__的数量,而不是__elements__的数量. (4认同)