数组拆分,进入行和列2-d数组

时间:2012-09-10 20:44:01

标签: c# multidimensional-array nested-loops jagged-arrays

我试图将ByteArray(代表一个screenShot数据)拆分成 一个2d数组,所以如果我有一个3x3(xy /行列)的数组

看起来像这样

int screenSwidth = 3;
int screenSheight = 3;
byte[] ScreenShot = new byte[] {1,2,3,4,5,6,7,8,9};

我正在尝试通过2个嵌套for循环,将串行数据分成 在 new 2dimentional数组中分隔的行,因为它原始在屏幕上形成/形成。

让我们只为此示例调用 new ScreenShotRows []为“b”

b [0] [0] = 1 b [0] [1] = 2 b [0] [2] = 3

b [1] [0] = 4 b [1] [1] = 5 b [1] [2] = 6

b [2] [0] = 7 b [2] [1] = 8 b [2] [2] = 9

问题是迭代整个数组的正确方法 我试图通过此代码实现这一目标。

     for (int HeightIter= 0; HeightIter < screenSheight; HeightIter++)
     {
           for (int WidthIter = 0; WidthIter < screenSwidth ; WidthIter++)
                {
                     ScreenShotRows[HeightIter, WidthIter] = ScreenShot[WidthIter];
                }
     }

并在第一行循环,使值为:

b [0] [0] = 1 b [0] [1] = 2 b [0] [2] = 3

b [1] [0] = 1 b [0] [1] = 2 b [0] [2] = 3

b [2] [0] = 1 b [0] [1] = 2 b [0] [2] = 3

这是我对这种multiDimetional / jagged数组的第一次尝试 使用嵌套for循环, 我觉得让它起作用非常令人困惑

也尽可能快地完成它,

因为我的数据远大于3x3,并且方法被多次调用,因此性能至关重要

我的下一步行动将与列

采用相同的方式

元素0,0到0,2 ----元素1,0到1,2 ----到2,0到2,2

      147                    258                369

1 个答案:

答案 0 :(得分:2)

将您的第一行替换为:

for (int HeightIter= 0; HeightIter < screenSheight; HeightIter++)

ScreenShotRows[HeightIter, WidthIter] = ScreenShot[WidthIter];

ScreenShotRows[HeightIter, WidthIter] = ScreenShot[3*HeightIter+WidthIter];

这应该是2d数组。