0

有一个文件是用 Objective C 创建的。在这个文件中有一个数组:int[x][y]. 在 C 中“按原样”读取此文件并仅将新的链接int[][]作为缓冲区传递是没有问题的。

但我想用 Java 读取这个文件,我试过读取它,int[x*y]但值不同,因为 C 存储一个双数组 ( [][]) 不像 simple []

我认为有两种方法:重新创建文件以在 Java 中使用或在 Java 中使用 C++,但也许有一些更简单的方法?

更新

创建文件(inf Objective C)(数组的大小每次都是固定的)

NSData *mydata = [NSData dataWithBytes:&areas length:sizeof(areas)];
[mydata writeToFile:filePathData options:NSDataWritingAtomic error:&error];
4

2 回答 2

3

我想问题是您正在将小端 C 数据读取为大端。如果您使用 DataInputStream 它假定大端,这只是大端机器(如 Sparc ;) 上 C 的默认值,并且许多机器现在几乎死了。

我假设你知道文件的格式,如果它不包含尺寸(宽度和高度),你知道它们是什么。

我建议您尝试使用ByteBufferwithorder(ByteOrder.LITTE_ENDIAN)来读取数据。有很多方法可以做到这一点。如果您的文件小于 2 GB,我将使用内存映射文件。

于 2012-08-21T07:47:15.030 回答
0

Java中也有多维数组的概念。

只需复制C 的编写器算法并以相反的顺序将其转换为java,即开始将其读入java 的二维数组。您将获得所需的输出。

于 2012-08-21T07:48:07.417 回答