16進エディタがバイナリエディタと呼ばれるのはなぜですか?


84

16進数とバイナリは2つの異なるベースです。私の理解では、Hexは単に使いやすく、より便利なバイナリのバージョンです。

ただし、16進エディタはバイナリエディタであるとよく耳にします。Googleで「バイナリエディター」を検索すると、16進エディターが表示されます。


3
Hexは、バイナリデータの多少読みやすい表現です。
サルマン

回答:


188

バイナリエディタは、ファイルを編集するバイナリファイル

バイナリファイル-ウィキペディア

バイナリファイルは、テキストファイルではありませんコンピュータファイルです。「バイナリファイル」という用語は、「非テキストファイル」を意味する用語としてよく使用されます[通常]バイトシーケンスと見なされます。...通常、バイナリファイルには、テキスト文字以外のものとして解釈されるバイトが含まれています。

六角エディタはの一種であるバイナリエディタデータで表現された数形式。

六角エディター-ウィキペディア

六角エディタ(またはバイナリファイルエディタまたはバイトエディタが)コンピュータファイルを構成する基本的なバイナリデータの操作を可能にするコンピュータプログラムの一種です。「hex」という名前は「hexadecimal」に由来しています。16を基数とする数値の標準的な表現です。


85

用語は難しいです。さまざまな人々があらゆる種類の異なる名前を持っています。

この例では、と思わのに対し、「バイナリエディタ」内の各バイトの値の従来の人間が読める表現を指し、バイナリ「バイナリエディタ」で、あなたが実際にバイトのファイルを編集しているという概念を指し、高レベルのテキストエンコーディングなどを考慮せずに、レイヤー(およびコンピューターはバイナリでバイトを保存)高レベルのテキスト形式では容易に表現できないファイルは、同じ理由で「バイナリファイル」または「バイナリ」と呼ばれることを思い出してください。

どちらも技術的に間違っていません。それらは、さまざまな角度からネーミングの問題に直面するだけです。しかし、個人的には、「バイナリエディター」がバランスをとって混乱していることに同意する傾向があります。


57

バイナリエディターの表示(バイナリ)

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

バイナリエディターの表示(16進数)

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は小さすぎてコンパクトな数字を表示できません。

基数2ではなく生のバイナリ

一般的に言えば、バイナリエディタのバイナリ」はベース2を参照せず、実際には「テキストエディタ」の反意語です。 違いは、テキストエディタがテキストを表示するように設計されているため、非印刷文字、改行、制御文字、無効なutf-8コード単位などを安全に処理する必要がないことです。 ファイルを開いてすぐに保存するだけで、ファイルを変更できます(エディターの内部変換、失敗により)。

逆に、バイナリエディターは、データにセマンティックを与えようとせず、ユーザーがバイト/ビット/ワードのストリームとして安全に処理できるようにします。

16進エディター

完璧なバイナリエディターは、考えられるすべてのバイナリ形式を認識して編集できるようにしますが、誰もが独自のバイナリ形式を作成でき、頻繁に変更されるため、すべての形式をサポートしようとするのは無益です。
エディターができる最善のことは、バイト自体を表示することです。すでに説明したように、16進数のプロパティにより、16進数が非常に便利です。

また、経験豊富なユーザーは、ビンを読んでいるときにビンを精神的に16進数に変換できます。
16進数で書き込まれたバイトからビットを設定/取得することは、実際には、ビンで書き込まれたバイトよりも労力はかかりません。
正直に言うと、16進数はバイナリよりも読みやすいとわかりました。


1
違いを示す素敵な例。実際にそれらを並べて見ると、ヘックスがより良く見えます
-DrZoo

1
@DrZooビットフィールドを処理している場合を除き、その場合、バイナリ表現ははるかに優れています!en.wikipedia.org/wiki/Bit_field
-misha256

6
misha256:正直なところ、16進数を見ると、バイナリが見えます。「f」と読みますが、私の脳はすぐに「1111」と言います。マトリックスをコンパクトに表示するようなものです。:)
tdrury

4
「2を基数としてではなく生のバイナリ」を強調するための+1
ケルビン

5
@tdruryの良い点、私はしばらくして、それがどのように表現されているかに関係なく、見る必要があるものを「見る」ようになったと思います。母、はい、マトリックス!私が学校に行って、機械語を16進数または10進数で喜んでコーディングし、2つの間で自由に変換できる人を思い出させます。彼はすべてのオペコードを暗記し、ビットフィールドやその他のパックされたデータ構造が彼の最初の言語であるように見えました。これらはコモドール64日間の気分(はるかに単純な日)でしたが、それでも印象的な才能です。
-misha256

15

16進エディタがバイナリエディタと呼ばれるのはなぜですか?

概要:

16進エディタを使用して、バイナリコンテンツを16進形式で表示し、これらの16進数を変更できるようにして、バイナリファイルを直接編集します。

ノート:

  • Hex Editorsでは、データを解釈しようとする他のプログラムの代わりに、ファイルの生データの内容を編集できます。

  • バイナリエディターまたはバイトエデ​​ィターとも呼ばれる16進エディター。

  • バイナリエディターまたはバイトエデ​​ィターを呼び出すことは、エディターが16進数を変更し、2進数またはバイトを変更しないため、実際には正しくありません(もちろん、ファイルを保存すると、基になる2進数とバイトが変更されます)

なぜ16進数でバイナリを編集するのですか?

データを16進形式で表示し、16進値を変更することにより、バイナリファイルを直接表示または編集/変更する方が簡単です。

  • 2進数を表す便利な方法の1つは、16進数を使用することです。

  • 歴史的に、コンピューターはアセンブリー言語でプログラムされていました。アセンブリー言語では、プロセッサー命令とメタステートメント(ディレクティブ、疑似命令、疑似操作としてさまざまに知られています)、コメント、データを使用してコードが記述されていました。

    • コードは、アセンブラーを使用してバイナリに変換されます。その後、バイナリコードをプロセスにロードして実行できます。

    • ソースコードがなければ、プログラムをバイナリではなく16進数で表示するエディターを使用して、プログラムを直接変更する方が簡単です。

  • バイナリコードは、16進数に変換されたときに人間がより読みやすくなります。

    たとえば、どのペアの数字を覚えたり、他の人に読みやすくしたりしますか?

    10110000 01100001
    

    または

    B0 61
    
  • 各16進数は4つの2進数(ビット)を表します。1つの16進数はニブルを表し、オクテットまたはバイトの半分(8ビット)です。

    たとえば、バイト値の範囲は0〜255(10進数)ですが、00〜FFの範囲の2つの16進数としてより便利に表現できます。

  • 16進数は、コンピューターのメモリアドレスを表すためにもよく使用されます。


3
また、Base 64は覚えやすいと思われるかもしれませんが、Hexには2文字⇒1バイトをマッピングできるという優れた特性があるため、Hexにこだわります。
PythonNut

9

いくつかのプログラミング言語とオペレーティングシステムの規則に従って、2種類のファイルがあります。

  • 各行が一連の印刷可能な文字(一部の制御文字を含む)で構成され、行末で終了するテキスト行のスイートで構成されるテキストファイル
  • テキストファイルで禁止されているヌルバイトを含む任意のバイトスイートを含むバイナリファイル。

テキストエディターはテキストファイルを開くことができますが、バイナリエディターは処理するファイルの種類に制限がありません。

多くの場合、バイナリエディターは16進数でデータを表現して入力できるので、単なる便利です(多くの場合、ASCII文字も表示および置換できます)。純粋なバイナリでデータを表示するだけでは、データが読みにくくなります。

人気のあるバイナリエディタの名前はHexEditです。

ここに画像の説明を入力してください

バイナリエディタと16進エディタの両方を適切に考慮します。

ここに画像の説明を入力してください

16進数でデータを表示せず、テキストのみを表示するオプションもあります

ここに画像の説明を入力してください


5

現在、ほとんどのコンピューターのファイルは、8ビットバイトです。これは通常、ファイルを直接編集するときに使用する抽象化です。

もちろん、実際には個々のデータを編集する機会がありますが、頻繁に編集することはありません。ビット7の設定のような共通のビットレベルの操作はとにかく進で行うのは簡単です- 1000年0000 BASE2 = 80 base16を進値が80の下にあるので、もし、BASE2のビット7明確であり、8つの追加するbase16することは、それを設定します。

16進数がこのタイプのアクティビティにより強く関連付けられている他の理由:

  • 既知の値を視覚的にスキャンする場合、16進数値は認識しやすいです。たとえば、20 base16 = 32はASCIIスペースですが、同じ値0010 0000 base2は、他のダンプされた値のフラッドの中では、それほど認識しにくいです。

  • 定期的にこれを実際に使用する必要があった古いシステムでは、画面スペースが制限されていた可能性があります(40列など)。Apple IIe ROMモニターは素晴らしい例です。メモリを16進数で40カラムの統合ビデオにダンプできます。80x24の画面で値をバイナリに展開すると、すぐに部屋を使い果たしてしまいます。これらの古いシステムでは、入力されたASCIIを正しい値に変換するルーチンを作成するのも簡単です。重要なのは、4KのRAMが大量のメモリと見なされ、システムにROMが搭載されているだけの場合があります。

  • 「hex」という言葉は、音が良く、短く、入力しやすいです。


5

人々がヘックスを使用しているとき、彼らは通常、バイナリで考えており、簡略表記としてヘックスを使用しています。

16は2の累乗です。8は2の累乗でもあります。そのため、16と8はバイナリの簡略表記に使用されています。バイナリと2の累乗の基数との間の手動変換は簡単です。ターゲットベースで示されたサイズでビットをグループ化し、対応する数字を使用します。

8進数のベース8は、多くの初期のコンピューターで人気があったため、Unixにはod8進数のダンプコマンドがあります。各8進数は、一度に3ビットを表します。しかし、8ビットバイトに基づいたマシンにとっては不便でした。

16進数、16進数の略、16進数は、1桁あたり4ビットを表します。これは、最近でははるかに一般的に使用される表現です。


3

これは、コンピューターが情報を保存する方法を指します。

基本レベルでは、コンピューターはデータを使用し01データを表すためにビットと呼ばれます。一緒にグループ化された8ビットは1バイトです。16進数は16進数です。つまり、16文字(0-9A-F)です。文字を保存するには、8ビットまたは1バイトかかります。

したがって、16進数131910進数)は0001 00112 進数と同じです。16進数は、バイナリよりも読みやすいです。


2

私が知っている最も初期のバイナリエディタも逆アセンブラでした。つまり、編集機能は、実行可能なバイナリファイルの逆アセンブルとパッチ適用の副産物でした。

そのようなアプリケーションの良い例は、Hiewです。

多くの場合、アセンブルされたコード(アセンブラー命令)は16進文字列として表されます。これが現代の混乱が生じる場所だと思います。人々は彼らが何を扱っているのか分からない。


2

コンパイルされた実行可能ファイル(Windowsの場合はsomefile.exeなど)は、プロセッサによって直接実行されるバイナリレベルで正しいマシンレベルのコードにコンパイルされているため、「バイナリ」と呼ばれることもあります。

したがって、バイナリを編集しています。16進数は人間にとって便利なので、たまたま16進数で表示されます。


はい。ただし、多くのデータファイルもバイナリです。適切なアプリケーションで読み取られると、スペースと翻訳が節約されます。また、多くの場合、テキストファイルも暗号化または圧縮されてバイナリファイルになります。
ジョー

1

あなたの質問に文字通り答えます。

まず、少し説明します。もちろん、16進エディターです。Hexが手段6小数は手段10を、そう進の手段16Bi2を意味します。あなたが言ったように、これらはベース16とベース2の2つの異なるベースです。つまり、16進数を定義するには16個のプレースホルダー要素が必要で、2進数を定義するには2個の要素が必要です。

あなたは言いました、

If you actually search for "binary editor" on Google, you get hex editors.

そして今、あなたの質問のために、

Why is that? 

これはリテラル部分です。Googleは、ほとんどの人が検索の満足のいく結果だと思ったものを返します。彼らの機械学習アルゴリズムは、文字列「editor」のコンテキスト内で、文字列「hexadecimal」および「hex」を「binary」に関連付けます。ほとんどのユーザーは、「バイナリ」「エディター」を検索した後、「16進数」「エディター」に満足しているため、それが得られます。それ以外の意味はありません。

What is the connection?

文字通り、Googleが何の意味も返さないため、何もありません。Googleは2進数と16進数の違いを知りません。検索エンジンの使用方法を集計するだけです。

16進数と2進数の実際の接続を求めていて、上の説明に戻ると、1つの16進数要素は16の可能性または4ビットをエンコードしますが、バイナリ要素は2の可能性または1ビットをエンコードします。1バイトで8ビットの情報をエンコードするには、2つの16進数要素または8つのバイナリ要素が必要です。したがって、バイナリまたは16進エディタは、異なるビューでのみ同じデータを表すため、交換可能に使用できることがわかります。


1

個々のビットを変更できるため、「バイナリ」と呼ばれます。

UIは通常、より便利であるため、デフォルトでは16進数で機能します。たとえばffffe0007d13e650 、画面上のスペースがより小さいため1111111111111111111000000000000001111101000100111110011001010000です。(これは、作成された例ではなく、デバッグの問題からの実際のアドレスです。)16進コード内のASCIIやUnicode文字なども「見る」方が簡単です。

ただし、それらのほとんどは、本当に必要な場合にバイナリビットの表示に切り替わります。

(なぜ私たちはパークウェイを運転するのにドライブウェイを駐車するのですか?それは単なる言葉です。英語はしばしば奇妙です。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.