• ベストアンサー

UNIXのバイナリファイル→WINDOWSのバイナリファイル(互換性ありますか?)

UNIXで計算させた数値をバイナリ形式のファイルで保存しています。このファイルをWINDOWS上のメモ帳で開くとUNIX上のものと異なった数値が表示されました。数値の個数は合っているのですが,何か問題はあるでしょうか。互換性がない場合の対処法もご教授願えれば助かります。説明補足が必要な場合はどんどん要求してください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.3

>UNIX側はHPのWSですから非INTEL系ですね それならエンディアンはインテルと逆になりますね。 >これを解決するフィルタのようなものは無いのでしょうか? あるかもしれませんが、調べたことはありません。 単純にバイトオーダーを入れ替えるだけですので簡単に作れます。 4バイトのlong型で16進でアドレス下位から、12,34,56,78 の場合は、 78,56,34,12 に並べ替えるだけです。(2回やると元に戻ります) charのポインタ型にキャストして入れ替えるのが簡単かな?

その他の回答 (2)

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.2

そのUNIX機のCPUはINTEL系ですか? そうでなければ、数値の内部形式の違いによるものかと思います。(エンディアン) 複数バイトの数値データを表現するときに、小さい桁をアドレス低い方から 使うか、高い方から使うかの違いがあります。 こちらをご覧ください。 http://yougo.ascii24.com/gh/00/000012.html もし、違うなら数値の表現形式が独自のものかもしれません。

inazu
質問者

補足

UNIX側はHPのWSですから非INTEL系ですね。 参考になりました。これを解決するフィルタのようなものは無いのでしょうか?

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

普通、「バイナリ形式のファイル」と言えば、 非テキストファイル…つまり、「メモ帳で開けないようなファイル」 のことを指すのですが。 バイナリ形式というのは単にテキスト形式ではないということで、 さまざまな種類があります。 この場合問題になるのは、まずUNIXでどんなプログラムでバイナリ形式の ファイルを作成したかです。 (あるいは自分で作ったプログラム?)

inazu
質問者

補足

自作ですが、具体的に示します。 テキストのファイル出力fopen(fname,"w")でデータを 1 2 3 をバイナリ形式でfopen(fname,"wb")で出力する。 UNIXでの表示プログラムでは、1,2,3が表示されるが、FTPでバイナリ形式でWindowsに持ってきて、同じプログラム(Windowsでコンパイル済み)で表示するとうまく表示されない。 バイナリのデータファイルがUNIXとWindowsで同じ構造ではないということでかね?データ互換を可能にするフィルタソフトみたいなものは無いのでしょうか?

関連するQ&A