Questão Por que editores hexadecimais chamam editores binários?


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, você terá editores hexadecimais.


78


origem


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


Respostas:


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

Arquivo binário - Wikipedia

UMA arquivo binário é um arquivo de computador que não é um arquivo de texto.   O termo "arquivo binário" é freqüentemente usado como um termo que significa "arquivo sem texto". ... [Isto é]   geralmente pensado como sendo uma seqüência de bytes. ... Arquivos binários   normalmente contêm bytes que devem ser interpretados como   algo diferente de caracteres de texto.

UMA editor hexadecimal é um tipo de editor binário em que os dados binários são representados em hexadecimal.

Editor hexadecimal - Wikipedia

UMA editor hexadecimal (ou editor de arquivos binários ou editor de bytes) é um tipo de programa de computador que permite a manipulação dos dados binários fundamentais que constituem um arquivo de computador. O nome 'hex' vem de 'hexadecimal': uma representação padrão para números que tem 16 como base.


182





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

Neste caso, parece que o hexadecimal em "editor hexadecimal" refere-se à representação convencional legível por humanos do valor de cada byte, binário em "editor binário" refere-se à noção de que você está, de fato, 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 deles é 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 em equilíbrio.


84





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 base dois

De um modo geral, então "binário" dentro 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).

Os editores binários, por outro lado, não tentam dar aos dados qualquer semântica 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 conhecia todos os formatos binários possíveis e permitia que você os 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 pode 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 o bin para hexadecimal ao lê-lo.
Configurar / obter um bit de um byte escrito em hexadecimal realmente não requer mais esforço do que um byte escrito em bin.
Para ser sincero, encontrei o hex Mais fácil que binário para ler.


54



Exemplos agradáveis ​​mostrando a diferença. Na verdade, vê-los lado a lado faz o hex parecer muito mais bonito - DrZoo
@DrZoo A menos que você esteja lidando com campos de bits, caso em que a representação binária é muito mais agradável! en.wikipedia.org/wiki/Bit_field. - misha256
misha256: honestamente, quando olho para hex - vejo binário. Eu leio "f" mas meu cérebro diz imediatamente "1111". É como ver a matriz de forma compacta. :) - tdrury
+1 para enfatizar "Binário como cru, não dois de base" - Kelvin
@tdrury bom ponto, suponho que depois de um tempo você acabou de começar a "ver" o que você precisa ver, independentemente de como é expresso. Haha, sim, Matrix! Lembra-me de um cara com quem eu fui para a escola, que felizmente codificava linguagem de máquina em hexadecimal ou decimal e podia converter livremente entre os dois. Ele sabia de cor todos os códigos operacionais e viu campos de bits e outras estruturas de dados compactadas como se fosse sua primeira língua. Esses foram os 64 dias do comodoro (dias bem mais simples), mas ainda assim um talento impressionante. - misha256


Por que editores hexadecimais chamam 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 editar o conteúdo dos dados brutos de um arquivo, em vez de outros programas que tentam interpretar os dados.

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

  • Chamar-lhes Editores Binários ou Editores de Byte 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 nós 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 é usando hexadecimal.

  • Historicamente, os computadores eram programados em linguagem assembly, onde o código era escrito usando instruções do processador e meta-instruções (conhecidas como directivas, pseudo-instruções e pseudo-operações), 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.

  • Código binário é mais facilmente legível por seres 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 do computador.


13



Note também que, enquanto a Base 64 pode parecer ainda mais fácil de memorizar, nós nos limitamos a Hex porque ela tem a boa propriedade de mapear 2 chars ⇒ 1 byte. - PythonNut


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 a substituição de caracteres ascii também), exibir apenas dados em binário puro tornaria os dados menos legíveis.

Um editor binário popular é nomeado HexEdit.

enter image description here

Ele se considera um editor binário e um editor hexadecimal:

enter image description here

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

enter image description here


8





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 realmente editar bits individuais de dados, 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 maneira - 1000 0000base2 = 80base16, portanto, se um valor hexadecimal for menor que 80base2 o bit 7 está claro e adicionando 8base16 vai definir isso.

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

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

  • Os sistemas antigos em que você realmente precisou usar isso regularmente podem ter um 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.


5





Quando as pessoas estão usando hexadecimal, 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.

Base 8, octal, era popular para muitos computadores antigos, e é por isso que o Unix tem od comando 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 comumente usada atualmente.


5





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

Nos computadores de nível básico, use 0 e 1 para representar dados, esses são chamados bits. Oito bits agrupados são um byte. Hexadecimal é 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.

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


3