【问题标题】:array split, into row and column 2-d Array数组拆分为行和列二维数组
【发布时间】:2012-09-10 20:44:01
【问题描述】:

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

应该是这样的

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

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

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

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

也是为了尽快完成,

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

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

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

      147                    258                369

【问题讨论】:

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


    【解决方案1】:

    将您的第一行替换为:

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

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

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

    这应该是二维数组。

    【讨论】:

    • 我在这里重命名了它,所以它只是一个错字。我现在已经修好了,不过这不是问题
    • 刚刚用调试器检查了我的代码——它可以工作。你怎么知道你的二维数组是什么样子的?通过调试器?
    • 与其硬编码3,不如使用screenSwidth。幻数很糟糕。
    • 是的,我只有这样学习,我已经用显微镜(调试器)检查过,对于 3,我想知道在阅读时使用哪个参数,然后刷新页面,你做了你的对此发表评论,我会尝试一下,非常感谢 Seeker +Servy
    • @servy 确实如此。感谢批评。
    猜你喜欢
    • 1970-01-01
    • 2020-11-18
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多