我发现自己通过执行以下操作将1d字节和单个数组转换为2d。我怀疑它可能和其他方法一样快,但是也许有一个更简单的范例?(林肯?)
private static byte[,] byte2D(byte[] input, int height, int width)
{
byte[,] output = new byte[height, width];
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
output[i, j] = input[i * width + j];
}
}
return output;
}
private static Single[,] single2D(byte[] input, int height, int width)
{
Single[,] output = new Single[height, width];
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
output[i, j] = (Single)input[i * width + j];
}
}
return output;
}
最佳答案
这无助于使方法中的代码更干净,但我注意到有两个基本相同的方法,它们的类型不同。我建议使用generics。
这将使您只定义一次方法。使用where
关键字,甚至可以限制允许方法处理的类型。
private static T[,] Make2DArray<T>(T[] input, int height, int width)
{
T[,] output = new T[height, width];
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
output[i, j] = input[i * width + j];
}
}
return output;
}
你可以这样调用这个方法
int[] a; //or any other array.
var twoDArray = Make2DArray(a, height, width);