33

我在这里画了一个巨大的空白。

我发现的一切都是关于从给定的行和列中获取索引,但是如何从索引中获取行和列?

该行很容易:(int)(index / width)

我的大脑正在遭受大量出血,试图计算列。

真丢人。

4

4 回答 4

67

对于从零开始的索引,这两个操作是,其中width是结构的宽度:

row    = index / width
column = index % width

这些适用于使用整数的 C,其中除法向下舍入,%模运算符给出余数。如果您不使用 C,则可能必须转换为等效操作。

如果您没有模运算符,则可以使用

row    = index / width
column = index - (row * width)
于 2012-08-06T02:36:03.233 回答
20

Paxdiablo 的答案是正确的。如果有人需要反向过程从行和列获取索引:

index = (row * width) + column
于 2018-02-07T11:08:37.847 回答
2

斯威夫特 4

typealias ColumnRowType = (column:Int, row:Int)

func indexToColumnRow(index:Int, columns:Int) -> ColumnRowType
{
    let columnIndex = (index % columns)
    let rowIndex = /*floor*/(index / columns)    // we just cast to an `Int`

    return ColumnRowType(columnIndex, rowIndex)
}
于 2018-08-08T20:11:50.017 回答
0

在java中,列偏移量为1,这是一种方法

int offset=1;
column = Math.floorDiv(location-offset , 3)+offset;
row = ( (location-offset) %3 )+offset ;
于 2018-08-22T01:52:58.283 回答