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


84

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, ouço frequentemente que editores hexadecimais são editores binários. Se você procurar "editor binário" no Google, obtém editores hexadecimais.


3
Hex é uma representação legível de dados binários.
Salman

Respostas:


188

Um editor binário edita um arquivo como um arquivo binário .

Arquivo binário - Wikipedia

Um arquivo binário é um arquivo de computador que não é um arquivo de texto. O termo "arquivo binário" é frequentemente usado como um termo que significa "arquivo não textual" [e] é geralmente considerado uma sequência de bytes. ... Arquivos binários normalmente contêm bytes que devem ser interpretados como algo diferente de caracteres de texto.

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

Editor hexadecimal - Wikipedia

Um editor hexadecimal (ou binário editor arquivo ou editor byte ) é um tipo de programa de computador que permite a manipulação dos dados binários fundamental que constitui um arquivo de computador. O nome 'hex' vem de 'hexadecimal': uma representação padrão para números que têm 16 como base.


85

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

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

Nem é tecnicamente incorreto; eles apenas enfrentam o problema de nomeação de diferentes ângulos. Em uma nota pessoal, porém, eu tenderia a concordar que o "editor binário" é confuso quanto ao equilíbrio.


58

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 números compactos.

Binário como bruto, não base dois

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, caracteres de controle, unidades de código utf-8 inválidas e assim por diante não precisam ser manuseados 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).

Os editores binários, por outro lado, não tentam fornecer semântica os dados e permitem que o usuário os manipule com segurança como um fluxo de bytes / bits / palavras.

Editores hexadecimais

O editor binário perfeito conheceria todos os formatos binários possíveis e permitiria a sua edição, mas como todos podem criar seu próprio formato binário e como eles mudam com muita frequência, é inútil tentar oferecer suporte a todos os formatos.
A melhor coisa que um editor poderia fazer é mostrar os próprios bytes e, devido às propriedades já discutidas da base 16, os números hexadecimais são muito úteis!

Além disso, um usuário experiente pode traduzir mentalmente bin para hex enquanto lê-lo.
Definir / extrair um pouco de um byte escrito em hexadecimal exige realmente absolutamente nenhum esforço do que um byte escrito em bin.
Para ser sincero, achei o hex mais fácil do que o binário de ler.


1
Bons exemplos mostrando a diferença. Na verdade, vê-los lado a lado faz com que o hexadecimal pareça muito mais agradável
DrZoo 23/03

1
@DrZoo A menos que você esteja lidando com campos de bits, nesse caso a representação binária é muito melhor! en.wikipedia.org/wiki/Bit_field .
misha256

6
misha256: honestamente, quando olho para o hex - vejo o binário. Eu li "f", mas meu cérebro imediatamente diz "1111". É como visualizar a matriz em formato compacto. :)
tdrury

4
+1 por enfatizar "Binário como bruto, não base dois"
Kelvin

5
@ drury bom ponto, suponho que depois de um tempo você apenas começa a "ver" o que você precisa ver, independentemente de como isso é expresso. Haha, sim, Matrix! Lembra-me de um cara com quem fui para a escola que codificou alegremente a linguagem de máquina em hexadecimal ou decimal e pode converter livremente entre os dois. Ele conhecia todos os códigos de operação de cor e viu campos de bits e outras estruturas de dados compactadas como se fosse sua primeira língua. Esses foram os 64 dias do Commodore (veja os dias mais simples), mas ainda assim um talento impressionante.
misha256

15

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

Resumo:

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

Notas:

  • Hex Editors permite editar o conteúdo de dados brutos de um arquivo, em vez de outros programas que tentam interpretar os dados.

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

  • Chamá-los de editores binários ou editores de bytes não é realmente correto, pois os editores estão alterando números hexadecimais e não números ou bytes binários (é claro que os números e bytes binários subjacentes serão alterados se o arquivo for salvo)

Por que editamos 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 eram programados em linguagem assembly, onde o código era escrito usando instruções do processador e meta-declarações (conhecidas como diretivas, pseudo-instruções e pseudo-ops), comentários e dados.

    • O código é traduzido em binário usando um assembler. 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úmero é 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 uma mordidela, que é metade de um octeto ou byte (8 bits).

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

  • Hexadecimal também é comumente usado para representar endereços de memória de computador.


3
Observe também que, embora a Base 64 possa parecer ainda mais fácil de memorizar, mantemos o Hex porque ele tem a boa propriedade de mapear 2 caracteres ⇒ 1 byte.
PythonNut

9

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

  • arquivos de texto constituídos por um conjunto de linhas de texto, cada linha composta por um conjunto de caracteres imprimíveis (incluindo alguns caracteres de controle) e finalizados no 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 arquivo que processam.

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

Um editor binário popular é chamado HexEdit .

insira a descrição da imagem aqui

Considera-se, com razão, um editor binário e um editor hexadecimal:

insira a descrição da imagem aqui

Existe ainda uma opção para não exibir os dados em hexadecimal, mas apenas o texto

insira a descrição da imagem aqui


5

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

Obviamente, há ocasiões para realmente editar bits individuais de dados, mas não com frequência. De qualquer maneira, operações comuns no nível de bit, como definir o bit 7, são fáceis de executar com hexadecimal - 1000 0000 base2 = 80 base16 , portanto, se um valor hexadecimal estiver abaixo de 80 base2, o bit 7 será limpo e a adição de 8 base16 o definirá.

Outras razões pelas quais hex está mais fortemente 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 enxurrada de outros valores despejados.

  • Sistemas antigos nos quais você realmente precisava usá-lo regularmente podem ter espaço limitado na tela (por exemplo, 40 colunas). O monitor Apple IIe ROM é um ótimo exemplo, ele pode despejar memória em hexadecimal no vídeo integrado de 40 colunas e expandir valores para o binário em uma tela de 80x24 o deixará rapidamente sem espaço. Para esses sistemas antigos, também é mais fácil escrever rotinas para converter o ASCII inserido novamente nos valores corretos. Importante onde 4K de RAM foi considerado muita memória e os sistemas podem ter apenas tanta ROM.

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


5

Quando as pessoas usam hexadecimal, geralmente pensam em binário e usam o hexadecimal como uma notação abreviada.

Dezesseis é uma potência de 2. Oito também é uma potência de dois. Então 16 e 8 foram usados ​​para notação abreviada de binário. A conversão manual entre binário e uma base de 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 em muitos computadores antigos, e é por isso que o Unix possui um odcomando octal dump. Cada dígito octal representa 3 bits de cada vez. Mas isso era inconveniente para máquinas baseadas em bytes de 8 bits.

Hexadecimal, hexadecimal para baixo, base 16, representa 4 bits por dígito. Essa é uma representação muito mais usada atualmente.


3

Isso se refere a como os computadores armazenam informações.

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

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


2

Os primeiros editores binários que conheço também eram desmontadores. Ou seja, o recurso de edição foi um subproduto da desmontagem e aplicação de patches de um arquivo binário executável.

Um bom exemplo dessa aplicação é o Hiew.

Código montado (instruções do assembler) geralmente é representado como seqüências hexadecimais. Eu acho que é aqui que surge a confusão moderna. As pessoas simplesmente não sabem com o que estão lidando.


2

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

Então você está editando um binário. Por acaso é exibido em hexadecimal porque hex é útil para humanos.


Sim, mas muitos arquivos de dados também são binários. Eles economizam espaço e tradução quando são lidos pelo aplicativo apropriado. Além disso, até arquivos de texto são frequentemente criptografados ou compactados, tornando-os arquivos binários.
31516 Joe

1

Vou responder suas perguntas literalmente.

Primeiro, um pouco de esclarecimento. Você quer dizer, é claro, um editor hexadecimal. Hex significa 6 e decimal significa 10 , então 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 de espaço reservado para definir um número hexadecimal e apenas 2 elementos para definir um número binário.

Você disse aquilo,

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 considerava resultados satisfatórios de suas pesquisas. Seus algoritmos de aprendizado de máquina associam as seqüências "hexadecimal" e "hex" com "binário" no contexto do "editor". Como a maioria dos usuários ficou satisfeita com o "editor hexadecimal" depois de pesquisar o "editor" binário ", é isso que obtemos. Não tem sentido de outra maneira.

What is the connection?

Literalmente, novamente, não há, pois o Google não retorna significado. O Google não sabe a diferença entre binário e hexadecimal, apenas pode tabular como as pessoas usam seu mecanismo de pesquisa.

Se você estava pedindo a conexão real entre hexadecimal e binário, 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 editores binários ou hexadecimais podem ser usados ​​de forma intercambiável, pois representam os mesmos dados, apenas em visões diferentes.


1

Eles são chamados de "binários" porque permitem alterar 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.

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

(Por que dirigimos na calçada, mas estacionamos na calçada? São apenas palavras. O inglês geralmente é estranho.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.