gpt4 book ai didi

java - 如何将 1D 数组转换为 3D 数组?

转载 作者:行者123 更新时间:2023-11-29 08:54:27 27 4
gpt4 key购买 nike

我有一个由 4096 (16^3) 个字节组成的文本文件,我需要将其加载并放入 3D 数组中。每个字节代表一个 16^3 block 中的图 block ID,那么我如何基于具有 16 个长度、宽度和深度的一维数组创建一个 3D 数组?我知道算法是这样的:

i = x + WIDTH * (y + HEIGHT * z);


z = Math.round(i / (WIDTH * HEIGHT));
y = Math.round((i - z * WIDTH * HEIGHT) / WIDTH);
x = i - WIDTH * (y + HEIGHT * z);

我怎么找到我呢?我不明白,考虑到 i 是计算 x、y 和 z 变量的变量。

最佳答案

您可以使用三个嵌套循环来完成。使用您给出的第一个公式从一组 xyz 到一维数组中的相应索引,例如这个:

byte[] data = ... // Read 4096 bytes
byte[][][] res = new byte[16][16][16];
for (int x = 0 ; x != 16 ; x++) {
for (int y = 0 ; y != 16 ; y++) {
for (int z = 0 ; z != 16 ; z++) {
res[x][y][z] = data[16*16*x + 16*y + z];
}
}
}

取决于数据的组织方式(例如按层,然后按行,而不是按列,或按列,然后按层,然后按行,或按行,然后按列,然后按层等。 ) 你可能需要在计算索引到 数据数组。

关于java - 如何将 1D 数组转换为 3D 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010295/

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