2016-06-16 6 views
3

私は2つの同じ.fit画像を持っています。なぜ16進編集が可逆でないのですか?

Linuxの@のLinux:〜/ IMGS/ImageTesting#sha256sum hexd_ss.fit ss.fit

dff6b019b590edb3e9c61c984205c5f49a4064be34feb6207c88dc920aad17e0 hexd_ss.fit dff6b019b590edb3e9c61c984205c5f49a4064be34feb6207c88dc920aad17e0 ss.fit

私は1つのビットを変更しましたof hexd_ss.fit

Linux @ Linux:〜/ imgs/ImageTesting#vi hexd_ss.fit

0000 0000 

0000 0001 

にだから私は持っている二つの異なるファイルサイズと異なるハッシュから

> [email protected]:~/imgs/ImageTesting# ls -l total 9344 
> -rw-r--r-- 1 root root 4781261 Jun 16 15:45 hexd_ss.fit 
> -rw-r--r-- 1 root root 4781260 Jun 16 15:33 ss.fit 
> 

Linuxの@のLinux:〜/ IMGS/ImageTesting #sha256sum hexd_ss.fit ss.fit

f3277110043b4170c111fa7d4291aa7df23de68c9e504259ae6158e5133faf1a hexd_ss.fit dff6b019b590edb3e9c61c984205c5f49a4064be34feb6207c88dc920aad17e0 ss.fit

しかし、私は前のように、それは異なるハッシュサイズが変更されないままと同様に2、再びそのビット0を変更しました。私は2つのいずれかに変更2つのゼロバイトのサイズをバイトました場合でも

> 0000 0001 to > 0000 0000 

[email protected]:~/imgs/ImageTesting# ls -l 

-rw-r--r-- 1 root root 4781261 Jun 16 15:47 hexd_ss.fit 
-rw-r--r-- 1 root root 4781260 Jun 16 15:33 ss.fit 

を変更した後

も同じまま。

0000 1111 

[email protected]:~/imgs/ImageTesting# ls -l 

-rw-r--r-- 1 root root 4781261 Jun 16 15:47 hexd_ss.fit 
-rw-r--r-- 1 root root 4781260 Jun 16 15:33 ss.fit 

は、だから私の質問がある -

  1. HEXEDITを逆になぜそのことはできませんか?
  2. 編集を元に戻すにはどうすればよいですか?
+0

ここのタイトルと重要な質問はちょっと不思議なことです。なぜファイルサイズが変わったのかを知りたいだけですが、それから元に戻るのですか? –

+0

多分私は何かが不足しているのですが、少しフリップしてファイルサイズを変更するのはなぜですか?おそらく、誤ってバイトを削除したことになります。 –

+0

私は主にHex変更されたファイルを元のものに戻す方法を知りたいと思っています。私はviを ':%!xxd' – meAbab

答えて

5

私は:%!xxd:%!xxd -r:wqをした...と1バイトより大きいのファイルになってしまった、その後、vi python3.5と私のpython3.5バイナリを開きました。どのように私は何も編集していないことに注意してください。あなたは

vi -b <file> 

viでバイナリファイルを開くために使用しなければならない...またはあなたがそれらを開いたとき、彼らは、変換され得る:P

マイpython3.5バイナリがそれに追加0aなった - 改行を。このバイトを削除した後、ファイルは元のファイルとまったく同じになりました。

+0

と使いました。私の間違いはバイナリモードとして-bスイッチを使用しないことでした。 なぜそれがそうであるか検索しながら、私は素敵な質問を見つけ、答えは[ここに]与えられます(http://stackoverflow.com/questions/13676528/difference-between-text-mode-and-binary-mode-in-c ) – meAbab

+0

@meAbabそのQ&Aは表面的にのみ関連しているので、その質問に記述されているように 'lf'を' crlf'に翻訳する振る舞いはOS特有で、 'vi'はこれをしません。 'lf'の' vi'による付加は 'vi'の振る舞いに過ぎません。 'gedit'や' pico'のように、エディタのように振る舞います。しかし、例えば。 'mousepad'はしません。 – Arjan

関連する問題