Por que editores hexadecimais chamam editores binários?

80

Hex e binário são duas bases diferentes. Hex, no meu entendimento, é simplesmente uma versão mais fácil de usar e mais conveniente do binário.

No entanto, muitas vezes ouço que editores hexadecimais são editores binários. Se você procurar por "editor binário" no Google, terá editores hexadecimais.

    
por Joseph A. 22.03.2016 / 14:22

12 respostas

184

Um editor binário edita um arquivo enquanto o trata como um arquivo binário .

Binary file - Wikipedia

A binary file is a computer file that is not a text file. The term "binary file" is often used as a term meaning "non-text file" [and is] usually thought of as being a sequence of bytes. ... Binary files typically contain bytes that are intended to be interpreted as something other than text characters.

Um editor hexadecimal é um tipo de editor binário no qual os dados são representados em hexadecimal .

Hex editor - Wikipedia

A hex editor (or binary file editor or byte editor) is a type of computer program that allows for manipulation of the fundamental binary data that constitutes a computer file. The name 'hex' comes from 'hexadecimal': a standard representation for numbers that has 16 as its base.

    
por 22.03.2016 / 14:37
84

A terminologia é difícil. Pessoas diferentes têm todos os tipos de nomes diferentes para as coisas.

Neste caso, parece que o hex em "editor hexadecimal" refere-se à representação convencional legível por humanos do valor de cada byte, enquanto o binário em "binário editor "refere-se à noção de que você está realmente editando o arquivo na camada de byte (e os computadores armazenam bytes em binário), sem considerar a codificação de texto de nível superior e assim por diante. Lembre-se de que os arquivos não prontamente representáveis em forma de texto de alto nível são chamados de "arquivos binários" ou "binários", pelo mesmo motivo.

Nenhum é tecnicamente incorreto; eles apenas chegam ao problema da nomenclatura de diferentes ângulos. Em uma nota pessoal, porém, eu tenderia a concordar que "editor binário" é confuso no equilíbrio.

    
por 22.03.2016 / 15:50
55

Exibição do editor binário (em binário)

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

Exibição do editor binário (em hexadecimal)

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

É verdade que um editor binário deve permitir que você manipule bytes em binário, mas como você pode ver, a base 2 é muito pequena para fornecer numerais compactos.

Binário como cru, não dois de base

De um modo geral, então " binário " no editor binário não se refere à base dois, na verdade é o antônimo de " editor de texto ".
. A diferença é que os editores de texto são projetados para mostrar texto, portanto caracteres não imprimíveis, novas linhas, chars de controle, unidades de código utf-8 inválidas e assim por diante não precisam ser manipulados com segurança.
O simples ato de abrir um arquivo e salvá-lo imediatamente pode alterá-lo (devido às conversões internas do editor, falhas).

Editores binários, por outro lado, não tentem dar aos dados qualquer semântica e deixe o usuário segurá-lo com segurança como um fluxo de bytes / bits / palavras.

Editores hexadecimais

O editor binário perfeito conhecia todos os formatos binários possíveis e permitia que você o editasse, mas como todos podem criar seu próprio formato binário e como eles mudam muitas vezes, é inútil tentar apoiar todos os formatos.
A melhor coisa que um editor poderia fazer é mostrar os bytes e, devido às propriedades já discutidas da base 16, numerais hexadecimais são muito úteis!

Além disso, um usuário experiente pode traduzir mentalmente bin para hexadecimal enquanto o lê.
Configurar / obter um pouco de um byte escrito em hexadecimal realmente não requer mais esforço do que um byte escrito em bin.
Para ser honesto, achei o hex mais fácil que o binário para ler.

    
por 22.03.2016 / 18:26
14

Por que os editores hexadecimais são chamados de editores binários?

Resumo:

Um editor hexadecimal é usado para editar diretamente um arquivo binário, exibindo o conteúdo binário em formato hexadecimal e permitindo que esses números hexadecimais sejam alterados.

Notas:

  • O Hex Editors permite a edição do conteúdo dos dados brutos de um arquivo, em vez de outros programas que tentam interpretar os dados.

  • Editores hexadecimais também chamados editores binários ou editores de bytes.

  • Chamar de editores binários ou editores de bytes não é realmente correto, pois os editores estão mudando números hexadecimais e não números binários ou bytes (obviamente os números binários e bytes subjacentes mudarão se o arquivo for salvo)

Por que editar o uso binário hexadecimal?

É mais fácil visualizar ou editar / modificar diretamente os arquivos binários exibindo os dados em formato hexadecimal e alterando os valores hexadecimais.

  • Uma maneira conveniente de representar números binários é usar hexadecimal.

  • Historicamente, os computadores foram programados em linguagem assembly, onde o código foi escrito usando instruções do processador e meta-instruções (conhecidas como diretivas, pseudo-instruções e pseudo-ops), comentários e dados.

    • O código é traduzido em binário usando um montador. O código binário pode então ser carregado em um processo e executado.

    • Sem o código-fonte, é mais fácil modificar o programa diretamente usando um editor que exibe o programa em hexadecimal em vez de binário.

  • O código binário é mais facilmente legível por humanos quando convertido em hexadecimal.

    Por exemplo, qual par de números é mais fácil de memorizar ou ler para outra pessoa?

    10110000 01100001
    

    Ou

    B0 61
    
  • Cada dígito hexadecimal representa quatro dígitos binários (bits). Um dígito hexadecimal representa um nibble, que é metade de um octeto ou byte (8 bits).

    Por exemplo, os valores de byte podem variar de 0 a 255 (decimal), mas podem ser mais convenientemente representados como dois dígitos hexadecimais no intervalo de 00 a FF.

  • O hexadecimal também é comumente usado para representar endereços de memória de computadores.

por 22.03.2016 / 16:43
8

De acordo com várias convenções de linguagem de programação e sistema operacional, existem dois tipos de arquivos:

  • arquivos de texto que são feitos de um conjunto de linhas de texto, cada linha sendo composta por um conjunto de caracteres imprimíveis (incluindo alguns caracteres de controle) e terminados ao final das linhas
  • arquivos binários que contêm um conjunto arbitrário de bytes, incluindo o byte nulo, que é proibido em um arquivo de texto.

Os editores de texto podem abrir arquivos de texto enquanto os editores binários não têm restrições quanto ao tipo de arquivos que processam.

O fato de os editores binários geralmente representarem e permitirem a entrada de dados em hexadecimal é apenas uma conveniência (eles geralmente exibem e permitem substituir caracteres ascii também), exibir apenas dados em binário puro tornaria os dados menos legíveis.

Um editor binário popular é chamado de HexEdit .

Eleseconsideraumeditorbinárioeumeditorhexadecimal:

Existeatéumaopçãoparanãoexibirosdadosemhexadecimal,massomenteotexto

    
por 22.03.2016 / 17:02
5

Arquivos na grande maioria, se todos, de computadores hoje são de 8 bits bytes . Essa é tipicamente a abstração com a qual estamos trabalhando ao editar diretamente um arquivo.

Naturalmente, há uma ocasião para editar os bits de dados individuais, mas não com frequência. Operações de nível de bit comuns como configurar o bit 7 são fáceis de fazer com o hex de qualquer forma - 1000 0000 base2 = 80 base16 , portanto se um valor hexadecimal estiver abaixo de 80 base2 bit 7 é claro e adicionando 8 base16 irá configurá-lo.

Outras razões pelas quais o hexadecimal é mais strongmente associado a esse tipo de atividade:

  • Os valores hexadecimais são mais fáceis de reconhecer ao procurar visualmente por valores conhecidos. Por exemplo, 20 base16 = 32, que é um espaço ASCII, mas o mesmo valor 0010 0000 base2 não é tão fácil de reconhecer como tal entre uma inundação de outros valores despejados .

  • Sistemas antigos em que você realmente precisou usar isso regularmente podem ter espaço de tela limitado (por exemplo, 40 colunas). O monitor ROM Apple IIe é um ótimo exemplo, ele pode despejar memória em hexadecimal no vídeo integrado de 40 colunas, e expandir os valores para binário em uma tela de 80x24 deixará você fora da sala rapidamente. Para esses sistemas antigos, também é mais fácil escrever rotinas para converter o ASCII inserido de volta para os valores corretos. Importante onde 4K de RAM foi considerado uma grande quantidade de memória e sistemas podem ter tido tanta ROM.

  • A palavra "hex" soa melhor, é mais curta e é mais fácil de digitar.

por 22.03.2016 / 17:12
5

Quando as pessoas estão usando hexadecimal, elas geralmente estão pensando em binário e usando o hex como uma notação abreviada.

Dezesseis é um poder de 2. Oito também é um poder de dois. Portanto, 16 e 8 foram usados para a notação abreviada de binário. A conversão manual entre o binário e uma base de alguma potência de dois é fácil. Apenas agrupe os bits no tamanho indicado pela base de destino e use o dígito correspondente.

A base 8, octal, era popular para muitos computadores antigos, e é por isso que o Unix tem um comando od octal dump. Cada dígito octal representa 3 bits de cada vez. Mas era inconveniente para máquinas baseadas em bytes de 8 bits.

Hexadecimal, hex para baixo, base 16, representa 4 bits por dígito. Esta é uma representação muito mais usada nos dias de hoje.

    
por 22.03.2016 / 16:15
3

Refere-se a como os computadores armazenam informações.

Nos computadores de nível básico, use 0 e 1 para representar dados, chamados de bits. Oito bits agrupados são um byte. Hexadecimal é a base 16, o que significa que tem 16 caracteres ( 0-9 , A-F ). Para armazenar um caractere, são necessários 8 bits ou 1 byte.

Portanto, um número hexadecimal 13 ( 19 em decimal) é igual a 0001 0011 em binário. É mais fácil ler hexadecimal do que binário.

    
por 22.03.2016 / 14:37
2

Primeiros editores binários que eu conheço também foram desmontadores. Ou seja, o recurso de edição foi um subproduto da desmontagem e correção de um arquivo binário executável.

Um bom exemplo de tal aplicação é Hiew.

O código montado (instruções do montador) é geralmente representado como cadeias hexadecimais. Eu acho que é aqui que surge a confusão moderna. As pessoas simplesmente não sabem com o que estão lidando.

    
por 24.03.2016 / 01:28
2

Qualquer arquivo compilado e executável (como somefile.exe, por exemplo, no Windows) é às vezes chamado de "binário", já que foi compilado em código no nível da máquina, que está correto no nível binário a ser executado pelo processador diretamente.

Então você está editando um binário. Apenas acontece de ser exibido em hexadecimal porque o hex é útil para humanos.

    
por 25.03.2016 / 19:13
1

Vou responder às suas perguntas literalmente.

Primeiro, um pouco de esclarecimento. Você quer dizer, claro, um editor hexadecimal. Hex significa 6 e decimal significa 10 , portanto, hexadecimal significa 16 . Bi significa 2 . Como você disse, essas são duas bases diferentes, base 16 e base 2, o que significa que são necessários 16 elementos marcadores para definir um número hexadecimal e apenas 2 elementos para definir um número binário.

Você disse isso,

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

E agora, para suas perguntas,

Why is that? 

Esta é a parte literal. O Google retorna o que a maioria das pessoas achava que eram resultados satisfatórios de suas pesquisas. Seus algoritmos de aprendizado de máquina associam as seqüências de caracteres "hexadecimal" e "hex" com "binário" dentro do contexto da "editor" de seqüência de caracteres. Já que a maioria dos usuários estava satisfeita com o "editor" hexadecimal depois que eles procuraram o "editor" "binário", é isso que recebemos. Não tem sentido em contrário.

What is the connection?

Literalmente, mais uma vez, não há nenhuma, já que o Google não retorna nenhum significado. O Google não sabe a diferença entre o binário e o hexadecimal, ele só pode tabular como as pessoas usam o mecanismo de pesquisa.

Se você estava pedindo a conexão real entre hexadecimal e binário, então, voltando ao meu esclarecimento acima, um elemento hexadecimal codifica 16 possibilidades ou 4 bits, mas um elemento binário codifica 2 possibilidades ou 1 bit. Para codificar os 8 bits de informação em um byte, precisamos de 2 elementos hexadecimais ou 8 elementos binários. Assim, você pode ver que os editores binários ou hexadecimais podem ser usados de forma intercambiável, uma vez que representam os mesmos dados, apenas em visões diferentes.

    
por 29.03.2016 / 03:19
1

Eles são chamados de "binários" porque permitem que você altere os bits individuais.

A interface do usuário geralmente funciona em hexadecimal por padrão porque é mais conveniente - por exemplo, ffffe0007d13e650 ocupa menos espaço na tela do que 1111111111111111111000000000000001111101000100111110011001010000 . (Esse é um endereço real de um problema de depuração, não um exemplo inventado.) É mais fácil "ver" coisas como caracteres ascii ou Unicode no código hexadecimal também.

Mas a maioria deles mudará para mostrar bits binários se você realmente quiser.

(Por que nós dirigimos no parkway mas estacionamos na calçada? São só palavras. O inglês é freqüentemente estranho.)

    
por 31.03.2016 / 18:17