2016-06-01 4 views
0

私は何年も前に書いたビジュアルな基本プログラムによって作成されたファイルを持っています。私はこのデータを変換しようとしているので、私も書きました。私は8バイトの倍精度浮動小数点型(VB)日付の変換に問題があります。私はthisスレッドを読んだ。この手順を実行することで、手動で日付を変換することができます(0x00000000E080E440)(2012年12月18日)。リトルエンディアンからビッグエンディアンへの小数点= 4.1991E4、これは41991が正しい日付を表します。今私はjavaでこれを記述しようとしています。スワッピングと、私はこのコードを摘み取られているため、他のポスト参照コードは:VBのバイナリファイルから日付を読み取る方法

/** 
    * Byte swap a single double value. 
    * 
    * @param value Value to byte swap. 
    * @return  Byte swapped representation. 
    */ 
    public static double swap (double value) 
    { 
    long longValue = Double.doubleToLongBits (value); 
    longValue = swap (longValue); 
    return Double.longBitsToDouble (longValue); 
    } 

このコードはコンパイルされません。私はちょうど私と一緒にクマを学んでいる。このコードは再帰的に呼び出されているようですが、自分自身を呼び出すとき(スワップ)には、longValueを渡しています。何か不足していますか?リトルエンディアンからスワップされたバイトをどのようにして大きくすることができますか?

答えて

0

コード自体を呼び出すことはありません。メソッドswap(long longValue)が呼び出され、メソッドはswap(double valueです)。あなたが他の方法を持っていないのでおそらくコンパイルされません。

+0

"互換性のないタイプ:2倍から長いへの不可逆変換が可能です。メソッドの交換は無限に繰り返されます。" –

+1

コンパイラは 'swap(long longvalue)'メソッドを探しています。それが見つからないので、double型をlong型に変換して、あなたが持っているルーチンを呼び出したいと仮定します。繰り返しますが、あなたのコードにはない長いバイトを逆にする方法があります。したがって、このコードはエラーであり、このコンパイルメッセージをスローし、動作しません。このコードを抜いた場所に戻り、欠落しているメソッドがないかどうかを確認します。 – arcy

関連する問題