7

2つのテキストファイルを比較するためにdiffコマンドを使用しています。それらは文字通り一致する必要があります。

だから私はdiffを使用します:

diff binary.out binary.expected

(ちなみに、これらのファイルはバイナリファイルではありません。テキストファイルです。プロジェクトの名前であるため、バイナリと呼びます)

そして得た

Binary files binary.out and binary.expected differ

私が別の差分ツールを使用するとき、すべての中で最も賢い(別名人間)、そして2つのファイルの間に実際には何の違いもありません。

誰かがここで何が起こっているのか知っていますか?

ありがとう。

4

2 に答える 2

7

diffdiffutilsから、テキスト/バイナリについて次のように述べています。

diffファイルの最初の数バイトをチェックすることにより、ファイルがテキストかバイナリかを判別します。正確なバイト数はシステムによって異なりますが、通常は数千バイトです。ファイルのその部分のすべてのバイトがnull以外の場合、ファイルはdiffテキストであると見なされます。それ以外の場合は、ファイルがバイナリであると見なされます。

したがって、GNU diffにはテキストとは何かについての非常にオープンな定義があり--text、ファイルをテキストとして処理するように強制するオプションの使用はほとんど必要ありません。

ヌル文字があるかどうか、またはヌル文字が含まれているかどうbinary.outかを確認しましたか?binary.expectedあなたのdiffプログラムはどのバージョンですか?

于 2012-04-25T22:23:15.240 に答える
3

diffオプションの空白は無視してください。

また、Unicode文字を認識し、それをバイナリとして解釈する場合もあります。差分ツールにテキストモードを強制するオプションがあるかどうかを確認してください。

于 2012-04-25T04:39:52.217 に答える