私はJ2ME開発のためにJavaで書いたレガシーツールをサポートしようとしています。STL/POSIXを使用して、J2SEからiOS iphoneにバイナリファイルをロード
iphone/ipadのC++で同じファイル形式で読む必要があります。あなたが尋ねる前に、なぜ - >
今私は値が一致し、私はそれを右に持っていることを確認イムことを得るカント(私もAndroidのNDK R7をサポートする必要があるとして):ここに私のJava(J2SE)のコードである: -
File file = new File(location, "test.d2r");
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
int i = Integer.reverseBytes(8);
writer.write(i);
writer.newLine();
writer.flush();
writer.close();
とiOSの土地イム行う際に: -
NSString *url = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"d2r"];
FILE* fp = fopen([url UTF8String], "r");
if (fp)
{
int j;
printf("\nReading...\n");
fscanf(fp, "%c", &j);
fclose(fp);
printf("DIGIT 1 %d\n\n", j);
}
else
{
printf("\n\n No file found...... \n\n");
}
だから、ファイルが正常に開きますが、番号が一致しません。 IveはEndianを裏返そうとしました。私が考慮できる唯一のことは、署名されていない(java)プラットフォームから署名された(C++)プラットフォームに変換するときに、私はそこにサインを取得していて、その値を乱しているということです。
確かに、どのポインタも大歓迎です。
乾杯で、Iさらにint * []と++のポインタを読み込んで同じ数値を取得していましたが、C++側を修正しましたが、数字が正しくないので、4バイトが間違った順序で書き込まれています。 – Dev2rights