gpt4 book ai didi

java - 线性列优先数组数据到行优先的转换

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:01 27 4
gpt4 key购买 nike

我将基于 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)]
}

谢谢。

最佳答案

首先,Java 数组索引是从 0 开始的,因此您需要 javaarray[1][2][0] 而不是 javaarray[2][3][1]。

第二,我想我明白你想做什么。

  • 输入:0,0,0(其中有 1 的槽)=>输出:0(索引中的 1扁平阵列)
  • 输入:1,2,0(插槽其中有 12 个)=> 输出:15(索引扁平阵列中的 12 个)
  • 输入:2,1,2(其中包含 26 的插槽)=> 输出:23(扁平化数组中 26 的索引)

看起来像你想要的,对于 (i,j,k) 的输入:

index = 9 * i + 3 * j + k

关于java - 线性列优先数组数据到行优先的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345027/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com