題 為什麼十六進制編輯器稱為二進制編輯器?


十六進制和二進制是兩種不同的鹼基在我的理解中,Hex只是一個更容易使用且更方便的二進製版本。

但是,我經常聽到十六進制編輯器是二進制編輯器。如果您在Google上搜索“二進制編輯器”,則會獲得十六進制編輯器。


80
2018-03-22 13:22


起源


十六進制是二進制數據的可讀表示。 - Salman A


答案:


一個 二元編輯器 編輯文件,同時將其視為一個文件 二進製文件

二進製文件 - 維基百科

一個 二進製文件 是一個不是文本文件的計算機文件。   術語“二進製文件”通常用作術語“非文本文件”[並且]   通常被認為是一個字節序列。 ...二進製文件   通常包含要解釋為的字節   文本字符以外的東西。

一個 十六進制編輯 是一種類型 二元編輯器 其中數據以數字表示 十六進制

Hex編輯器 - 維基百科

一個 十六進制編輯 (要么 二進製文件編輯器 要么 字節編輯器)是一種允許操縱構成計算機文件的基本二進制數據的計算機程序。名稱“hex”來自“十六進制”:數字的標準表示,以16為基數。


184
2018-03-22 13:37





術語很難。不同的人有各種不同的名字。

在這種情況下,似乎是 十六進制 在“十六進制編輯器”中,是指每個字節值的常規人類可讀表示,而“ 二進制 在“二進制編輯器”中,您指的是您確實在字節層編輯文件(並且計算機以二進制形式存儲字節),而不考慮更高級別的文本編碼等。回想一下,出於同樣的原因,在高級文本形式中不易表示的文件被稱為“二進製文件”或“二進製文件”。

兩者在技術上都不正確;他們只是從不同的角度來看待命名問題。但是,就個人而言,我傾向於同意“二進制編輯器”令人困惑。


84
2018-03-22 14:50





二進制編輯器顯示(二進制) 

00000000 | 11111011 11111011 11111011 11111011 11110101 11111011 11111011 11111011
00001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00010000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00011000 | 11110101 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00100000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00101000 | 11111011 11111011 11101111 11111011 11111011 11111011 11111011 11111011
00110000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00111000 | 11111011 11111011 11111011 11101111 11111011 11111011 11111011 11111011
01000000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01010000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01011000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01100000 | 11111011 11111011 11111011 11111011 11111011 11101111 11111011 11111011
01101000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011

二進制編輯器顯示(十六進制) 

00 | fb fb fb fb f5 fb fb fb fb fb fb fb fb fb fb fb
10 | fb fb fb fb fb fb fb fb f5 fb fb fb fb fb fb fb 
20 | fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb fb 
30 | fb fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb 
40 | fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb 
50 | ef fb fb fb fb fb fb fb ef fb fb fb fb fb fb fb 
60 | fb fb fb fb fb ef fb fb fb fb fb fb fb fb fb fb

確實,二進制編輯器應該允許你處理二進制的字節,但正如你所看到的,基數2太小而不能給出緊湊的數字。

二進制為原始,不是基數二

一般來說,然後“二進制“在 二元編輯器 不是指基數二,它實際上是“反義詞”文本編輯器“。
不同之處在於文本編輯器旨在顯示文本,因此不需要安全地處理非打印字符,新行,控製字符,無效的utf-8代碼單元等。
僅僅打開文件並立即保存它可以改變它(由於編輯器內部轉換,失敗)。

另一方面,二進制編輯器不會嘗試為數據提供任何語義,並讓用戶安全地將其作為字節/位/字流來處理。

十六進制編輯器

完美的二進制編輯器會知道每種可能的二進制格式,並允許您編輯它,但因為每個人都可以製作自己的二進制格式,因為它們會發生變化 通常,嘗試支持所有格式是徒勞的。
編輯器可以做的最好的事情是顯示字節本身,並且由於已經討論過,基本16的屬性,十六進制數字非常方便!

此外,有經驗的用戶可以在閱讀時精神上將bin翻譯為十六進制。
設置/獲取以十六進制寫入的字節有點完全沒有比在bin中寫入的字節更多的努力。
說實話,我發現了十六進制 更輕鬆 比二進制閱讀。


55
2018-03-22 17:26



很好的例子顯示了差異。實際上並排看到它們使十六進制看起來更好 - DrZoo
@DrZoo除非你處理位字段,否則二進製表示更好! en.wikipedia.org/wiki/Bit_field。 - misha256
misha256:老實說,當我看十六進制時 - 我看到了二進制。我讀了“f”,但我的大腦立刻說“1111”。這就像以緊湊的形式觀察矩陣。 :) - tdrury
+1用於強調“Binary as raw,not base two” - Kelvin
@tdrury好點,我想一段時間後你就會開始“看到”你需要看到的東西而不管它是如何表達的。哈哈,是的,Matrix!讓我想起了一個我上學的人,他用十六進製或十進制編碼機器語言,可以在兩者之間自由轉換。他全心全意地了解所有操作碼,並看到了比特字段和其他數據結構,就像是他的第一語言。這些是準備64天的Commodore(更簡單的日子),但仍然是一個令人印象深刻的天賦。 - misha256


為什麼十六進制編輯器稱為二進制編輯器?

摘要:

十六進制編輯器用於通過以十六進制格式顯示二進制內容並允許更改這些十六進制數字來直接編輯二進製文件。

筆記:

  • 十六進制編輯器允許編輯文件的原始數據內容,而不是其他嘗試解釋數據的程序。

  • 十六進制編輯器也稱為二進制編輯器或字節編輯器。

  • 調用二進制編輯器或字節編輯器是不正確的,因為編輯器正在更改十六進制數字而不是二進制數字或字節(當然,如果文件被保存,底層二進制數字和字節將會改變)

為什麼我們編輯二進制使用十六進制?

通過以十六進制形式顯示數據並更改十六進制值,可以更輕鬆地直接查看或編輯/修改二進製文件。

  • 表示二進制數的一種便捷方式是使用十六進制。

  • 歷史上,計算機是用彙編語言編寫的,其中代碼是使用處理器指令和元語句(各種各樣的指令,偽指令和偽操作),註釋和數據編寫的。

    • 使用彙編程序將代碼轉換為二進製文件。然後可以將二進制代碼加載到進程中並執行。

    • 沒有源代碼,使用以十六進製而不是二進制顯示程序的編輯器直接修改程序更容易。

  • 當轉換為十六進制時,二進制代碼更容易被人讀取。

    例如,哪一對數字更容易記憶或讀出給別人?

    10110000 01100001
    

    要么

    B0 61
    
  • 每個十六進制數字代表四個二進制數字(位)。一個十六進制數字表示半字節,它是八位字節或字節的一半(8位)。

    例如,字節值的範圍可以是0到255(十進制),但可以更方便地表示為00到FF範圍內的兩個十六進制數字。

  • 十六進制也常用於表示計算機內存地址。


14
2018-03-22 15:43



另請注意,雖然Base 64看起來更容易記憶,但我們堅持使用Hex,因為它具有映射2個字符⇒1個字節的良好屬性。 - PythonNut


根據幾種編程語言和操作系統約定,有兩種文件:

  • 由一組文本行組成的文本文件,每行由一組可打印字符(包括一些控製字符)組成,並以行尾結束
  • 包含任意字節集的二進製文件,包括在文本文件中禁止的空字節。

文本編輯器能夠打開文本文件,而二進制編輯器對它們處理的文件類型沒有限制。

二進制編輯器通常表示並允許以十六進制輸入數據這一事實只是一種便利(它們經常顯示並允許替換ascii字符),僅顯示純二進制數據會使數據不太清晰。

一個流行的二進制編輯器命名 hexedit的

enter image description here

它正確地認為自己是二進制編輯器和十六進制編輯器:

enter image description here

甚至可以選擇不以十六進制顯示數據,而只顯示文本

enter image description here


8
2018-03-22 16:02





今天絕大多數計算機上的文件都是8位的 字節。這通常是直接編輯文件時使用的抽象。

當然,有時候實際編輯單個數據位,但不經常。無論如何,設置第7位等常見的位級操作很容易使用 - 1000 0000BASE2 = 80base16,所以如果十六進制值小於80BASE2 第7位清楚並添加8base16 將設置它。

十六進制與此類活動關聯性更強的其他原因:

  • 在可視掃描已知值時,更容易識別十六進制值。例如,20base16 = 32這是一個ASCII空間,但值為0010 0000BASE2 在大量其他傾銷價值中,並不容易認識到這一點。

  • 實際需要定期使用此系統的舊系統可能具有有限的屏幕空間(例如40列)。 Apple IIe ROM監視器是一個很好的例子,它可以將內存以十六進制形式轉儲到40列集成視頻中,並且在80x24屏幕上將值擴展為二進制將使您快速離開房間。對於這些舊系統,編寫例程以將輸入的ASCII轉換回正確的值也更容易。重要的是,4K的RAM被認為是大量內存,系統可能只有ROM。

  • “十六進制”這個詞聽起來更好,更短,更容易打字。


5
2018-03-22 16:12





當人們使用十六進制時,他們通常以二進制思考並使用十六進製作為簡寫符號。

16是2的冪.8也是2的冪。所以16和8已被用於二進制的簡寫表示法。二進制之間的手動轉換,以及一些2的冪的基礎很容易。只需將這些位按目標基數指示的大小分組,然後使用相應的數字。

基礎8,八進制,很受早期計算機的歡迎,這就是為什麼Unix有一個 od 八進制轉儲命令。每個八進制數字一次代表3位。但是基於8位字節的機器不方便。

十六進制,簡稱十六進制,基數為16,表示每位4位。如今,這是一種更常用的表現形式。


5
2018-03-22 15:15





這指的是計算機如何存儲信息。

在基本級別的計算機上使用 01 為了表示數據,這些被稱為位。組合在一起的八位是一個字節。十六進制是16的基數,這意味著它有16個字符(0-9A-F)。要存儲一個字符,需要8位或1個字節。

所以是一個十六進制數 13 (19 十進制)與。相同 0001 0011 在二進制。讀取十六進制比二進制更容易。


3
2018-03-22 13:37





我所知道的最早的二進制編輯也是反彙編程序。這意味著,編輯功能是可執行二進製文件的反彙編和修補的副產品。

這種應用的一個很好的例子是Hiew。

彙編代碼(彙編指令)通常表示為十六進製字符串。我想,這就是現代混亂的地方。人們只是不知道,他們正在處理什麼。


2
2018-03-24 00:28