我试图将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
答案 0 :(得分:2)
将您的第一行替换为:
for (int HeightIter= 0; HeightIter < screenSheight; HeightIter++)
行ScreenShotRows[HeightIter, WidthIter] = ScreenShot[WidthIter];
到
ScreenShotRows[HeightIter, WidthIter] = ScreenShot[3*HeightIter+WidthIter];
这应该是2d数组。