fortranで作成したバイナリのデータをPHPで読み込む
自分用の覚書。Cやfortran等で作成された倍精度浮動小数点実数を保存したバイナリデータをPHPを用いて読み込む方法が、意外とGoogle先生で安直には見つからなかったのでメモ。
データを作成したfortran側のソースコード
PROGRAM main
REAL(KIND(0D0)),DIMENSION(2)::a
a(1)=ASIN(1D0)
a(2)=ACOS(-1D0)
WRITE(9)a
END PROGRAM
<?php
$handle=fopen("fort.9","rb");
if ( $handle ) {
// fortranの行頭にある行のサイズデータ(4バイト)を取得する
$tmp= fread($handle,4);
$tmp= unpack("l",$tmp);
$sizeByte= $tmp[1];
// データ読み込みの本体
$tmp= fread($handle,$sizeByte);
$data= unpack("d*",$tmp);
// 行末4バイトを読み込む
$tmp= fread($handle,4);
}