- ベストアンサー
データファイルの値がlinuxとMacで異なる理由と解決方法
- 質問者は、職場でlinux、自宅でMacを使用しているが、同じバイナリデータファイルから読み出した値が異なることに困っている。
- 1byteのバイナリデータなのでエンディアンは関係ないと思うが、他に原因があるのか疑問を抱いている。
- プログラムの一部を示し、linuxとMacでの出力結果を比較しているが、3,8,11番目の値が異なることに気付いている。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
バイナリファイルの実際の内容はどうなっているのでしょうか? macとlinuxで結果が異なるということよりも、どちらが間違っているのか、あるいは両方とも間違っているのか、どうなんでしょう。
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
大前提として「Mac と Linux で同じ内容として読み込めている」のであれば, #2 にあるように dposition の値があやしいような気がします. ちなみに gcc のバージョンは gcc -v と実行したときの最後の行にあります.
お礼
odというコマンドでバイナリの中身が直接みられることがわかったので、インプットファイルの中身を確かめてみたら、そもそも両PCでインプットファイルの該当部分が違ってることがわかりました。。。 同じファイルをコピーしたはずなんですが。。。 しょうもない理由ですみませんっ! gcc -v の情報、ありがとうございます。 一つ勉強になりました。 お返事どうもありがとうございましたm(_ _)m
- shred
- ベストアンサー率35% (25/70)
>linuxでやった場合の出力を左、Maxでやった場合の出力 これはエディタで閲覧したものか、10進数表記したものどちら? あなたはバイナリファイルと言っている。そしてrbモードでオープンしている。しかし読み書きはfgetc,fprintfを用いている。
お礼
odというコマンドでバイナリの中身が直接みられることがわかったので、インプットファイルの該当部分の値を確かめてみたところ、両PCでそもそもインプットファイルの該当部分の値が違ってることがわかりました。。。 全く同じファイルをコピーして使ったはずなんですが。。。 しょうもない理由ですみませんっっ ちなみに、インプットはバイナリ、アウトプットは10進数表示のテキストで、表示した値はテキストのアウトプットファイルの中身でした。 お返事どうもありがとうございましたm(_ _)m
- php504
- ベストアンサー率42% (926/2160)
dposition[ ] 配列の中身がlinuxとMacで違うとしか思えません fprintf(fo[i],"%d\n",array[dposition[i]]); を fprintf(fo[i],"dposition=%d:%d\n", dposition[i], array[dposition[i]]); にして確認してみては
お礼
odというコマンドでバイナリの中身が直接みられることがわかったので、アドバイスいただいた方法でdpositionの中身を確かめ、インプットファイルの該当部分の値を確かめてみました。すると、macとlinuxでは、そもそもインプットファイルの該当部分の値が違ってることがわかりました。。。 全く同じファイルをコピーして使ったはずなんですが。。。 しょうもない理由ですみませんっっ お返事どうもありがとうございましたm(_ _)m
お礼
odというコマンドでバイナリの中身が直接みられることがわかり、確かめてみました。すると、macとlinuxでは、そもそもインプットファイルの該当部分の値が違ってることがわかりました。。。 全く同じファイルをコピーして使ったはずなんですが。。。 インプットファイルをコピーし直してやり直したら、どちらのPCでもちゃんと同じ値がでてきました。 しょうもない理由ですみませんっっ 皆さん、いろいろとお返事どうもありがとうございましたm(_ _)m