Java を使用するフォーマットを合理的に作成した dat ファイルに (ある種の) ログを書き込むプログラムからバイナリ ファイルを読み込もうとしています。私はそれを次のようにロードしています:
DataInputStream in = new DataInputStream(new FileInputStream("file.dat"));
System.out.println("Bytes skipped: " + in.skipBytes(4));
System.out.println(in.readLong());
問題は、readLong() の値が予想と異なることです。Hex Workshop では、16 進ブロックを強調表示します。
BF02 0000
そして、それが有効な符号付きの短い/長い数値であると報告しますが、出力は私が期待しているものとは大きく異なります。Java ドキュメントを見ると、64 ビット (8 バイト) の long をクラス化すると記載されていますが、他のソースでは符号付き long 整数は 32 ビットである必要があることが示されています。これを回避する方法はありますか?
乾杯、
トム