0

Objective C で作成されたファイルが 1 つあります。このファイルには、配列がありますint[x][y]。このファイルを C で「そのまま」読み込んで、新しいリンクのみint[][]をバッファとして渡すことは問題ありません。

しかし、私はこのファイルをJavaで読みたいと思っていint[x*y]ます.[][][]

Javaで使用するためにファイルを再作成するか、JavaでC ++を使用するという2つの方法があると思いますが、もっと簡単な方法がいくつかありますか?

更新しました

ファイルの作成(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のデフォルトにすぎません;)そして多くのマシンは現在ほとんど機能していません。

ファイルの形式を知っていて、寸法(幅と高さ)が含まれていない場合は、ファイルが何であるかを知っていると思います。

ByteBufferを使用しorder(ByteOrder.LITTE_ENDIAN)てデータを読み取ることをお勧めします。これを行うにはいくつかの方法があります。ファイルが2GBより小さい場合は、メモリマップトファイルを使用します。

于 2012-08-21T07:47:15.030 に答える
0

Javaにも多次元配列の概念があります。

C のライター アルゴリズムをコピーし、逆の順序で Java に変換するだけです。つまり、Java の 2 次元配列への読み取りを開始します。必要な出力が得られます。

于 2012-08-21T07:48:07.417 に答える