Delphi レコードで構成されるバイナリ ファイルがあります。レコードは次のようになります。
TRMapFileHeader = record
FileType: String[8];
Points: Int64;
Objects: Int64;
Text: Int64;
ObjLayers: byte;
TextLayers: byte;
end;
このファイルをJavaで読みたいです。ファイルを開きました:
DataInputStream file = new DataInputStream(new FileInputStream(filename))
そして、データを読み取ろうとしました:
for(int i = 0; i<8; i++)
System.out.print((char)file.readByte());
System.out.println();
System.out.println(file.readLong());
System.out.println(file.readLong());
System.out.println(file.readLong());
System.out.println(file.readByte());
System.out.println(file.readByte());
そして私は持っています
正しいデータの代わりに:
RMF
441434
80457
14186
11
4
私はさまざまな読み方で遊んで、次のことを知りました。
System.out.println(file.readByte());
for(int i = 0; i<3; i++)
System.out.print((char)file.readByte());
for(int i = 0; i<36; i++)
file.readByte();
System.out.println();
System.out.println(file.readByte());
System.out.println(file.readByte());
次の出力が得られます: Eclipse 出力。最初のバイトは 3 で、次に 3 文字、次に 36 バイト、そしてレコードの最後の 2 つのパラメータになります。
で、こういう記録をどう読むのか気になる