我将基于Fortran的3D列主要顺序数组扁平化为线性内存。我可以使用什么公式/算法将其映射回Java 3D行主要顺序数组?例如,
|1, 2, 3| |10, 11, 12| |19, 20, 21|
|4, 5, 6| |13, 14, 15| |22 23, 24|
|7, 8, 9| |16, 17, 18| |25, 26, 27|
在内存中看起来像
缓冲区= 1,4,7,2,5,8,3,6,9,10,13,16,11,14,17,12,15,18,19,22,25,20,23 ,26,21,24,27
理想情况下,我需要传入数组索引并将偏移量返回到线性内存。在伪代码中,类似
for(;;)
{
javaarray[2][2][1] = buffer[Util.LookupOffset(2,2,1)]
}
感谢。
答案 0 :(得分:2)
首先,Java数组索引是从0开始的,所以你需要javaarray [1] [2] [0]而不是javaarray [2] [3] [1]。
第二件事,我想我明白你要做什么。
对于(i,j,k)的输入,看起来像你想要的那样:
index = 9 * i + 3 * j + k