Linux

圖像文件中有哪些奇怪的字元?

  • April 17, 2022

所以我對linux很陌生,我正在學習基本命令。我也很想知道事情是如何運作的,所以在我學會了 cat 和 nano 命令之後,我嘗試在圖像上使用它們,所有這些奇怪的符號都出現了(linux mint):

使用 nano 後將圖像(index.jpeg)作為文件

我也在kali上嘗試過,我得到了同樣的東西,所以我相信這與圖像在位級別上的儲存方式有關,但我還是在開始,我找不到任何關於這些符號到底是什麼的解釋意思是。

所有的文件都是由 1 和 0 組成的,每一個都稱為一個位。一個“字節”是 8 位。對於 8 位,有 256 種可能的 1 和 0 組合。

純文字文件中的數據,即nano要編輯的內容(終端期望使用 輸出cat)被劃分為字節。通常,文件中的每個字元構成一個字節。例如,在 ASCII 編碼中,字母“A”是字節 01000001。某些字元編碼(如 UTF-8)有時使用多個字節來表示一個字元,因為它們需要覆蓋超過 256 個字元,但它們仍然將文件成字節。(“控製字元”也有字節,例如用於換行的“Control-J”。)

圖片是二進製文件,不是文本文件;它們的位也可以分為字節,但這些字節並不意味著代表字元/字母。

當非文本文件作為文本文件打開時,文本編輯器會嘗試將二進製文件的字節解釋為代表字元。由於它們不打算這樣做,因此二進製文件的字節與如果文件實際上是文本文件時這些相同字節將代表的字元之間存在相當多的隨機相關性。但是,這就是 nano 試圖將文件解釋為的內容,因此您會得到隨機字元,其中許多是通常不打算列印的控製字元,因此會產生奇怪的結果。

這就是我理解發生了什麼的方式。無論如何,我都不是電腦科學家,所以我希望評論者會在需要時改進我的答案。

顯然,如果你想編輯圖像,你應該使用像 gimp 或 krita 這樣的圖像編輯器,而不是文本編輯器。您可以假設使用二進制編輯器或十六進制編輯器等,但這需要非常詳細的知識,了解圖像格式如何將其表示的數據轉換為位和字節,我認為這對於不同的圖像格式是不同的。

引用自:https://unix.stackexchange.com/questions/699388