LoginSignup
9
3

More than 3 years have passed since last update.

Macでバイナリファイルの内容比較

Posted at

サイズが1バイトだけ異なる2つのバイナリファイルの違いを知りたかったので、以下を行いました。テキストファイルだったら単純にdiffとかvimdiffとかでできるんだけど、それに近いことをバイナリファイルで確認したいなと。

自分の環境はMacですが、Windowsでもほぼ同じことができそうです。と言うかWindowsならバイナリファイル同士の比較のソフトがありそうですね。

まず最初にcmpコマンドで二つのファイルを比較。これはdiffのバイナリバージョンで、何バイト目が異なっているのかを教えてくれます。


$ cmp yumin.z yumin2.z
yumin.z yumin2.z differ: char 5578418, line 21732

ふむふむ、5578418バイト目ね。これで異なっている位置が分かりました。
今度はバイナリエディタでこれらのファイルを開いてみましょう。

Hex Fiend
https://apps.apple.com/jp/app/hex-fiend/id1342896380
上記はMacのApp Storeですが、Windows用もググれば出てきます。これを自分のマシンにインストールします。

で、今度はバイナリファイルをHex Fiendで開きます。開いたら、メニューの
「Edit」→「Jump to Offset ⌘L」で出てくる窓に、上記の異なるバイト5578418を入力して「Move」あるいはエンターを押すと、画面はその箇所に移動します。
HexDiff.png
もう一つのファイルに対しても同じことを行い、メニューの「Window」から異なる方のファイルを指定したり、⌘+F1または⌘+fn+F1で画面を切り替えたりすると、値を比較できます。
HexDiff2.png
この時、2つのウィンドウのサイズや位置をぴったり合わせておくと、⌘+F1または⌘+fn+F1での比較が楽そうですね。

他にもMacで良さそうなツールがあったらぜひ教えてください。

これのおかげで、Gitが改行コードをLF(0A)からCRLF(0D0A)自動変換してるせいで、(今回は1バイトの)違いが生じてしまったのに気づけました。.gitattributesはちゃんと書かないとね!

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3