0

我试图将 ByteArray (代表屏幕截图数据)拆分为 2d 数组,所以如果我有一个 3x3 数组(xy /rows 列)

它看起来像这样

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

我正在尝试通过 2 个嵌套的 for 循环,将串行数据拆分为的二维数组中的单独行,因为它是在屏幕上最初成形/形成的。

对于这个例子,我们只需将的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

这是我第一次尝试这种带有嵌套 for 循环的多维/锯齿状数组,我发现让它工作起来非常令人困惑

也尽可能快地完成它,

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

我的下一步将是对列采用相同的方式

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

      147                    258                369
4

1 回答 1

2

将您的第一行替换为:

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

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

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

这应该制作二维数组。

于 2012-09-10T20:48:50.260 回答