苦し紛れの C の endian converter
某所で必要になったので作成。とりあえずメモ
void *inv_read_4_byte(FILE *fp)これを例えば int 型の変数 p を用いて
{
void *out;
unsigned char p[4];
p[3]= (unsigned char) fgetc(fp);
p[2]= (unsigned char) fgetc(fp);
p[1]= (unsigned char) fgetc(fp);
p[0]= (unsigned char) fgetc(fp);
out= p;
return out;}
int p;という風に受けて、fortran の unformatted 形式のファイルのデータを C で読出す。
fp= fopen("fort.1","rb");
p= *( (int*) inv_read_4_byte(fp) ); // fortranの1行目のデータサイズの取得
fseek(fp,(long)(p+4),SEEK_CUR); // fortranの1行目の行末への移動
p= *( (int*) inv_read_4_byte(fp) ); // fortranの2行目のデータサイズの取得