• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同じデータファイルなのに、linuxとMacで値が違ってしまうのはなぜ?)

データファイルの値がlinuxとMacで異なる理由と解決方法

このQ&Aのポイント
  • 質問者は、職場でlinux、自宅でMacを使用しているが、同じバイナリデータファイルから読み出した値が異なることに困っている。
  • 1byteのバイナリデータなのでエンディアンは関係ないと思うが、他に原因があるのか疑問を抱いている。
  • プログラムの一部を示し、linuxとMacでの出力結果を比較しているが、3,8,11番目の値が異なることに気付いている。

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

  • ベストアンサー
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

バイナリファイルの実際の内容はどうなっているのでしょうか? macとlinuxで結果が異なるということよりも、どちらが間違っているのか、あるいは両方とも間違っているのか、どうなんでしょう。

chari_07
質問者

お礼

odというコマンドでバイナリの中身が直接みられることがわかり、確かめてみました。すると、macとlinuxでは、そもそもインプットファイルの該当部分の値が違ってることがわかりました。。。 全く同じファイルをコピーして使ったはずなんですが。。。 インプットファイルをコピーし直してやり直したら、どちらのPCでもちゃんと同じ値がでてきました。 しょうもない理由ですみませんっっ 皆さん、いろいろとお返事どうもありがとうございましたm(_ _)m

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

大前提として「Mac と Linux で同じ内容として読み込めている」のであれば, #2 にあるように dposition の値があやしいような気がします. ちなみに gcc のバージョンは gcc -v と実行したときの最後の行にあります.

chari_07
質問者

お礼

odというコマンドでバイナリの中身が直接みられることがわかったので、インプットファイルの中身を確かめてみたら、そもそも両PCでインプットファイルの該当部分が違ってることがわかりました。。。 同じファイルをコピーしたはずなんですが。。。 しょうもない理由ですみませんっ! gcc -v の情報、ありがとうございます。 一つ勉強になりました。 お返事どうもありがとうございましたm(_ _)m

  • shred
  • ベストアンサー率35% (25/70)
回答No.3

>linuxでやった場合の出力を左、Maxでやった場合の出力 これはエディタで閲覧したものか、10進数表記したものどちら? あなたはバイナリファイルと言っている。そしてrbモードでオープンしている。しかし読み書きはfgetc,fprintfを用いている。

chari_07
質問者

お礼

odというコマンドでバイナリの中身が直接みられることがわかったので、インプットファイルの該当部分の値を確かめてみたところ、両PCでそもそもインプットファイルの該当部分の値が違ってることがわかりました。。。 全く同じファイルをコピーして使ったはずなんですが。。。 しょうもない理由ですみませんっっ ちなみに、インプットはバイナリ、アウトプットは10進数表示のテキストで、表示した値はテキストのアウトプットファイルの中身でした。 お返事どうもありがとうございましたm(_ _)m

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

dposition[ ] 配列の中身がlinuxとMacで違うとしか思えません fprintf(fo[i],"%d\n",array[dposition[i]]); を fprintf(fo[i],"dposition=%d:%d\n", dposition[i], array[dposition[i]]); にして確認してみては

chari_07
質問者

お礼

odというコマンドでバイナリの中身が直接みられることがわかったので、アドバイスいただいた方法でdpositionの中身を確かめ、インプットファイルの該当部分の値を確かめてみました。すると、macとlinuxでは、そもそもインプットファイルの該当部分の値が違ってることがわかりました。。。 全く同じファイルをコピーして使ったはずなんですが。。。 しょうもない理由ですみませんっっ お返事どうもありがとうございましたm(_ _)m

関連するQ&A