从文件中读取int [] []。 Java的

时间:2012-08-21 07:42:19

标签: java objective-c arrays file binaryfiles

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

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

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

已更新

创建文件(目标C)(每次固定数组的大小)

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

2 个答案:

答案 0 :(得分:3)

我想问题是你正在读小端C数据作为大端。如果你使用DataInputStream,它假设大端,这只是大端机器上的C的默认值,例如Sparc;)和许多机器现在都已经死了。

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

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

答案 1 :(得分:0)

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

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

相关问题