- ベストアンサー
正の実数のみで書かれたバイナリーファイルの読み込み
fortranにてバイナリファイルの読み込みを試みています。 そのファイルは4バイトの正の実数のみで書かれています。 符号がある無しで表示出来る実数の範囲が異なってくると思うのですが、正数値のみを取り扱わせるような変数宣言はfortranでどのようにすればよいのでしょうか? 単純に「real*4 変数名」と宣言すると読み込んだ値が明らかに 異常値を示します、endian処理はきちんとやっているので 符号のある無しが原因だと想定しています。お知恵をかしてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>正の正数です。 これが正の整数という意味なら、 FORTRANには符号なし整数はありません。(私が使っていたFORTRANには無かった) 異常値というのが負数を挿しているなら、 ファイルからInteger*4の変数I4に読み込んだ後、 Integer*8かReal*8の変数D8で if I4<0 then D8 = 2**32 - I4 else D8 = I4 end if とすれば変換できます。(ソースコードはFORTRAN風BASIC) >単純に「real*4 変数名」と宣言すると読み込んだ値が明らかに 異常値を示します Integer*4で書かれたデータをReal*4で読み込めば異常値になるのは当然です。
その他の回答 (1)
- rinkun
- ベストアンサー率44% (706/1571)
4バイトの正の実数とは? 実数型で正の範囲だけ扱うような型は普通の処理系ではないですよ。 元のバイナリファイルは何で作成したものですか。 またfortranでの読み込みはどんなコンピュータでやっていますか。 不動小数点数型の表現にはIEEE754とIBM方式など互換性のない方式があります。同じ4バイト表現でも方式が異なれば同じには読めません。
お礼
すみません。正の正数です。 書き出しも同じ処理系で行っています。