RandomAccessFile in = new RandomAccessFile("BOT.grd", "r");
in.seek(28);
double xll=in.readDouble();
をダブルを読みながら、間違った値を得ることが、私は29〜36バイトのロケーションこの値存在から存在している二重のデータを読み取るために使用していたコードは500ですが、私は2.088Eを取得しています-317上記Javaでバイナリファイルから
RandomAccessFile in = new RandomAccessFile("BOT.grd", "r");
in.seek(28);
double xll=in.readDouble();
をダブルを読みながら、間違った値を得ることが、私は29〜36バイトのロケーションこの値存在から存在している二重のデータを読み取るために使用していたコードは500ですが、私は2.088Eを取得しています-317上記Javaでバイナリファイルから
このファイルは、javaとは異なるEndiannessに格納されているようです。バイトおそらく倍増する変換する前に逆転される必要があり、あなたが値を読み取るために、次のコードを試みることができる:ここで
long l = in.readLong();
double d = Double.longBitsToDouble(Long.reverseBytes(l));
は、問題を示し例である:
double d = 500.0;
long l1 = Double.doubleToLongBits(d);
long l2 = Long.reverseBytes(l1);
System.out.println(Double.longBitsToDouble(l1));
System.out.println(Double.longBitsToDouble(l2));
出力:
500.0
2.088356E-317
@ravitejaこれはまだあなたのために働いていないですか?もしそうなら、私たちはこのファイルフォーマットのいくつかの情報や例を必要とします。しかし、あなたがこの答えを受け入れると、私はそれがあなたの問題を解決したと考えます。 –
ファイルを読み取っているコードやファイルを書き込んでいるコードに問題があります。これ以上の詳細/コード/例なしで言うことができます。 http://tinyurl.com/so-hintsを参照してください –
[SSCCE](http://sscce.org) – aioobe
を作成する暗闇の中でのショット:ダブルスの代わりにフロートを読む? –