Perché gli editor esadecimali sono chiamati editor binari?


84

Hex e binary sono due basi diverse. Hex, a mio avviso, è semplicemente una versione più semplice da usare e più conveniente del binario.

Tuttavia, sento spesso che gli editor esadecimali sono editor binari. Se cerchi "editor binario" su Google, otterrai editor esadecimali.


3
Hex è una rappresentazione in qualche modo leggibile di dati binari.
Salman A

Risposte:


188

Un editor binario modifica un file come file binario .

File binario - Wikipedia

Un file binario è un file di computer che non è un file di testo. Il termine "file binario" viene spesso usato come termine che significa "file non testuale" [ed è] generalmente considerato una sequenza di byte. ... I file binari in genere contengono byte che devono essere interpretati come qualcosa di diverso dai caratteri di testo.

Un editor esadecimale è un tipo di editor binario in cui i dati sono rappresentati come esadecimali .

Editor esadecimale - Wikipedia

Un editor esadecimale (o binario editor di file o montaggio byte ) è un tipo di programma per computer che consente di manipolare i dati binari fondamentale che costituisce un file di computer. Il nome "hex" deriva da "hexadecimal": una rappresentazione standard per numeri che ha 16 come base.


85

La terminologia è difficile. Persone diverse hanno ogni sorta di nomi diversi per le cose.

In questo caso, sembra che l' esagono in "editor esadecimale" si riferisca alla rappresentazione convenzionale leggibile dall'uomo del valore di ogni byte, mentre il binario in "editor binario" si riferisce all'idea che stai effettivamente modificando il file sul byte layer (e i computer memorizzano i byte in binario), senza considerare la codifica di testo di livello superiore e simili. Ricordiamo che i file non facilmente rappresentabili in forma di testo di livello superiore sono chiamati "file binari" o "binari", per lo stesso motivo.

Né è tecnicamente errato; arrivano solo al problema della denominazione da diverse angolazioni. Su una nota personale, tuttavia, tenderei a concordare sul fatto che "editor binario" è confuso a conti fatti.


58

Visualizzazione dell'editor binario (in binario)

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

Visualizzazione dell'editor binario (in esadecimale)

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

È vero che un editor binario dovrebbe lasciarti gestire i byte in binario, ma come puoi vedere la base 2 è troppo piccola per fornire numeri compatti.

Binario come grezzo, non base due

In generale, quindi " binario " nell'editor binario non fa riferimento alla seconda base, in realtà è l'antonimo di " editor di testo ".
La differenza è che gli editor di testo sono progettati per mostrare il testo, quindi non è necessario gestire in modo sicuro caratteri non stampabili, nuove righe, caratteri di controllo, unità di codice utf-8 non valide e così via.
Il semplice atto di aprire un file e salvarlo immediatamente può modificarlo (a causa di conversioni interne dell'editor, errori).

Al contrario, gli editor binari non provano a fornire dati semantici e consentono all'utente di gestirli in modo sicuro come un flusso di byte / bit / parole.

Editor esadecimali

L'editor binario perfetto avrebbe conosciuto ogni possibile formato binario e ti avrebbe permesso di modificarlo, ma poiché tutti possono creare il proprio formato binario e poiché cambiano molto spesso, è inutile provare a supportare tutti i formati.
La cosa migliore che un editor potrebbe fare è mostrare i byte stessi e, a causa delle proprietà, già discusse, della base 16, i numeri esadecimali sono molto utili!

Anche un utente esperto può tradurre mentalmente bin in hex mentre lo legge.
L'impostazione / estrazione di un bit da un byte scritto in esadecimale non richiede assolutamente alcuno sforzo di un byte scritto nel cestino.
Ad essere sincero, ho trovato hex più semplice del binario da leggere.


1
Bei esempi che mostrano la differenza. In realtà vederli fianco a fianco rende l'esagono molto più bello
DrZoo,

1
@DrZoo A meno che tu non abbia a che fare con bit-field, nel qual caso la rappresentazione binaria è molto più bella! en.wikipedia.org/wiki/Bit_field .
misha256,

6
misha256: onestamente, quando guardo hex, vedo binario. Ho letto "f" ma il mio cervello dice subito "1111". È come vedere la matrice in forma compatta. :)
martedì

4
+1 per enfatizzare "Binario come grezzo, non base due"
Kelvin

5
@tdrury buon punto, suppongo che dopo un po 'inizi a "vedere" quello che devi vedere, indipendentemente da come è espresso. Haha, sì, Matrix! Mi ricorda un ragazzo con cui sono andato a scuola che ha felicemente codificato il linguaggio macchina in formato esadecimale o decimale e potrebbe convertirsi liberamente tra i due. Conosceva a memoria tutti i codici operativi e vide campi di bit e altre strutture di dati impaccate come se fosse la sua prima lingua. Quelli erano i Commodore 64 giorni, attenzione (giorni molto più semplici), ma comunque un talento impressionante.
misha256,

15

Perché gli editor esadecimali sono chiamati editor binari?

Sommario:

Un editor esadecimale viene utilizzato per modificare direttamente un file binario visualizzando il contenuto binario in formato esadecimale e consentendo la modifica di questi numeri esadecimali.

Appunti:

  • Hex Editors consente la modifica del contenuto dei dati grezzi di un file, invece di altri programmi che tentano di interpretare i dati.

  • Editor esadecimali come anche chiamati editor binari o editor di byte.

  • Chiamarli Redattori binari o Redattori di byte non è realmente corretto poiché gli editor stanno cambiando numeri esadecimali e non numeri binari o byte (ovviamente i numeri binari e i byte sottostanti cambieranno se il file viene salvato)

Perché modificiamo l'uso binario esadecimale?

È più semplice visualizzare o modificare / modificare direttamente i file binari visualizzando i dati in forma esadecimale e modificando i valori esadecimali.

  • Un modo conveniente di rappresentare i numeri binari consiste nell'utilizzare esadecimali.

  • Storicamente i computer sono stati programmati in linguaggio assembly, in cui il codice è stato scritto usando istruzioni e meta-istruzioni del processore (note in vari modi come direttive, pseudo-istruzioni e pseudo-operazioni), commenti e dati.

    • Il codice viene tradotto in binario usando un assemblatore. Il codice binario può quindi essere caricato in un processo ed eseguito.

    • Senza il codice sorgente è più semplice modificare il programma direttamente utilizzando un editor che visualizza il programma in formato esadecimale anziché binario.

  • Il codice binario è più facilmente leggibile dall'uomo quando viene convertito in esadecimale.

    Ad esempio, quale coppia di numeri è più facile da memorizzare o leggere a qualcun altro?

    10110000 01100001
    

    O

    B0 61
    
  • Ogni cifra esadecimale rappresenta quattro cifre binarie (bit). Una cifra esadecimale rappresenta un bocconcino, che è la metà di un ottetto o byte (8 bit).

    Ad esempio, i valori dei byte possono variare da 0 a 255 (decimale), ma possono essere rappresentati più convenientemente come due cifre esadecimali nell'intervallo da 00 a FF.

  • L'esadecimale è anche comunemente usato per rappresentare gli indirizzi di memoria del computer.


3
Si noti inoltre che, sebbene Base 64 possa sembrare ancora più facile da memorizzare, ci atteniamo a Hex perché ha la bella proprietà di mappare 2 caratteri ⇒ 1 byte.
PythonNut,

9

Secondo diversi linguaggi di programmazione e convenzioni del sistema operativo, esistono due tipi di file:

  • file di testo costituiti da una suite di righe di testo, ciascuna delle quali è composta da una suite di caratteri stampabili (inclusi alcuni caratteri di controllo) e terminata dalla fine delle righe
  • file binari che contengono una suite arbitraria di byte incluso il byte null che è vietato in un file di testo.

Gli editor di testo sono in grado di aprire file di testo mentre gli editor binari non hanno restrizioni sul tipo di file che elaborano.

Il fatto che gli editor binari spesso rappresentino e consentano l'immissione di dati in formato esadecimale è solo una comodità (spesso visualizzano e consentono anche la sostituzione di caratteri ASCII), la sola visualizzazione dei dati in puro binario renderebbe i dati meno leggibili.

Un famoso editor binario si chiama HexEdit .

inserisci qui la descrizione dell'immagine

Si considera giustamente sia un editor binario che un editor esadecimale:

inserisci qui la descrizione dell'immagine

C'è anche un'opzione per non visualizzare i dati in esadecimale ma solo il testo

inserisci qui la descrizione dell'immagine


5

I file sulla maggior parte, se tutti, dei computer oggi sono byte a 8 bit . Questa è in genere l'astrazione con cui si sta lavorando durante la modifica diretta di un file.

Certo, ci sono occasioni per modificare effettivamente singoli bit di dati, ma non spesso. Le operazioni comuni a livello di bit come l'impostazione del bit 7 sono comunque facili da eseguire con hex - 1000 0000 base2 = 80 base16 , quindi se un valore esadecimale è inferiore a 80 base2 il bit 7 è chiaro e l'aggiunta di 8 base16 lo imposterà.

Altri motivi per cui hex è maggiormente associato a questo tipo di attività:

  • I valori esadecimali sono più facili da riconoscere durante la scansione visiva di valori noti. Ad esempio, 20 base16 = 32 che è uno spazio ASCII, ma lo stesso valore 0010 0000 base2 non è così facile da riconoscere come tale tra un flusso di altri valori scaricati.

  • I vecchi sistemi in cui era effettivamente necessario utilizzarlo su base regolare potrebbero avere uno spazio dello schermo limitato (ad esempio 40 colonne). Il monitor ROM Apple IIe è un ottimo esempio, può scaricare la memoria in esadecimale al video integrato a 40 colonne e l'espansione dei valori binari su uno schermo 80x24 ti farà uscire rapidamente di spazio. Per questi vecchi sistemi, è anche più semplice scrivere routine per convertire ASCII immesso ai valori corretti. Importante dove 4K di RAM era considerata molta memoria e i sistemi potevano avere solo la stessa ROM.

  • La parola "hex" suona meglio, è più breve ed è più facile da scrivere.


5

Quando le persone usano hex, di solito pensano in binario e usano hex come notazione abbreviata.

Sedici è un potere di 2. Otto è anche un potere di due. Quindi 16 e 8 sono stati usati per la notazione abbreviata del binario. La conversione manuale tra binario e una base di una potenza di due è facile. Raggruppa semplicemente i bit nella dimensione indicata dalla base di destinazione, quindi utilizza la cifra corrispondente.

Base 8, ottale, era popolare per molti dei primi computer, motivo per cui Unix ha un odcomando di discarica ottale. Ogni cifra ottale rappresenta 3 bit alla volta. Ma è stato scomodo per le macchine basate su byte a 8 bit.

Esadecimale, esadecimale in breve, base 16, rappresenta 4 bit per cifra. Questa è una rappresentazione molto più comunemente usata in questi giorni.


3

Questo si riferisce al modo in cui i computer memorizzano le informazioni.

A livello base i computer usano 0e 1per rappresentare i dati, questi sono chiamati bit. Otto bit raggruppati insieme sono un byte. Esadecimale è base 16, il che significa che ha 16 caratteri ( 0-9, A-F). Per memorizzare un carattere ci vogliono 8 bit o 1 byte.

Quindi un numero esadecimale 13( 19in decimale) è uguale 0001 0011a quello binario. È più facile leggere esadecimali che binari.


2

I primi editor binari che conosco erano anche disassemblatori. Ciò significa che la capacità di modifica era un sottoprodotto dello smontaggio e della correzione di un file binario eseguibile.

Un buon esempio di tale applicazione è Hiew.

Il codice assemblato (istruzioni assembler) è spesso rappresentato come stringhe esadecimali. Penso che sia qui che sorge la confusione moderna. Le persone semplicemente non sanno con cosa hanno a che fare.


2

Qualsiasi file compilato e eseguibile (come somefile.exe, ad esempio, su Windows) viene talvolta chiamato "binario", poiché è stato compilato in un codice a livello di macchina che è corretto a livello binario per essere eseguito direttamente dal processore.

Quindi stai modificando un binario. Capita solo di essere visualizzato in esadecimale perché esadecimale è utile per l'uomo.


Sì, ma anche molti file di dati sono binari. Risparmiano spazio e traduzione quando vengono letti dall'applicazione appropriata. Inoltre, anche i file di testo sono spesso crittografati o compressi rendendoli file binari.
Joe,

1

Risponderò letteralmente alle tue domande.

Innanzitutto, un po 'di chiarimenti. Intendi, ovviamente, un editor esadecimale. Esadecimale significa 6 e decimale significa 10 , quindi esadecimale significa 16 . Bi significa 2 . Come hai detto, queste sono due basi diverse, base 16 e base 2, il che significa che sono necessari 16 elementi segnaposto per definire un numero esadecimale e solo 2 elementi per definire un numero binario.

L'hai detto tu,

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

E ora per le tue domande,

Why is that? 

Questa è la parte letterale. Google restituisce ciò che la maggior parte delle persone pensava fossero risultati soddisfacenti delle loro ricerche. I loro algoritmi di apprendimento automatico associano le stringhe "esadecimali" e "hex" a "binary" nel contesto della stringa "editor". Dato che la maggior parte degli utenti era soddisfatta dell '"editor" "esadecimale" dopo aver cercato "editor" binario, questo è ciò che otteniamo. Non ha alcun significato altrimenti.

What is the connection?

Di nuovo letteralmente, non c'è nessuno poiché Google non restituisce alcun significato. Google non conosce la differenza tra binario ed esadecimale, può solo tabulare come le persone usano il loro motore di ricerca.

Se stavi chiedendo la vera connessione tra esadecimale e binario, tornando al mio chiarimento sopra, un elemento esadecimale codifica 16 possibilità o 4 bit, ma un elemento binario codifica 2 possibilità o 1 bit. Per codificare gli 8 bit di informazioni in un byte sono necessari 2 elementi esadecimali o 8 elementi binari. Quindi puoi vedere che gli editor binari o esadecimali possono essere usati in modo intercambiabile poiché rappresentano gli stessi dati, solo in viste diverse.


1

Sono chiamati "binari" perché ti permettono di cambiare singoli bit.

L'interfaccia utente di solito funziona in esadecimale per impostazione predefinita perché è più conveniente, ad esempio ffffe0007d13e650 occupa meno spazio sullo schermo rispetto a 1111111111111111111000000000000001111101000100111110011001010000. (Questo è un indirizzo reale di un problema di debug, non un esempio inventato.) È più facile "vedere" anche cose come caratteri ASCII o Unicode nel codice esadecimale.

Ma la maggior parte di loro passerà a mostrarti bit binari se davvero li vuoi.

(Perché guidiamo sul vialetto ma parcheggiamo sul vialetto? Sono solo parole. L'inglese è spesso strano.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.