Dados binários e de texto não são separados: são simplesmente dados . Depende da interpretação que os torna um ou outro. Se você abrir dados binários (como um arquivo de imagem) em um editor de texto, muitos deles não farão sentido, porque não se encaixam na interpretação escolhida (como texto).
O que você chama de texto é um subconjunto do conteúdo possível do arquivo: dados que em um determinado conjunto de caracteres são convertidos em caracteres legíveis.
Por exemplo, em ASCII , você pode ver que, dos 128 valores "permitidos", apenas cerca da metade são letras e números, 30 são pontuação e o restante são caracteres de controle . O último grupo simplesmente não é muito usado em arquivos de texto e não possui uma representação textual realmente boa. Alguns deles são caracteres de tabulação e nova linha , onde os editores de texto já precisam ser criativos para exibi-los.
Alguns editores de texto têm opções para exibir explicitamente espaços em branco. Em seguida, eles serão desenhados como caracteres, além de seu comportamento de formatação regular (que também é apenas a interpretação desses caracteres).
O ASCII puro interpreta apenas 128 valores. Os bytes usados para armazenar essas informações têm 256 valores possíveis cada, portanto metade dos valores possíveis não são permitidos no ASCII. Esses são, por exemplo, usados em conjuntos de caracteres específicos da região, como o Latim 1, mas no ASCII, eles são indefinidos. Eles não têm representação útil em um visualizador de texto que possa lidar apenas com ASCII.
Dados binários geralmente não são interpretados como texto. Portanto, nesses arquivos, todos os valores possíveis de bytes são comumente encontrados. Todo o resto seria um desperdício (e é por isso que você pode compactar muito bem o texto). Os formatos de arquivo de imagem são complicados, e você geralmente não os vê como texto, portanto, eles não precisam ser legíveis.
Como não há interpretação de dados comum (conjunto de caracteres) que mapeia todos os valores possíveis para caracteres legíveis, e como isso não faria muito sentido de qualquer maneira (como não é um texto legível), as partes principais são exibidas como sem sentido.
Um editor hexadecimal escolhe uma representação diferente para os dados: exibe cada byte como dois dígitos hexadecimais . É apenas uma representação diferente e uma com um conjunto de caracteres facilmente legível por humanos: todos os 256 valores de bytes possíveis podem ser representados como dois dígitos hexadecimais.
Como existe um mapeamento fácil de dados binários para hexadecimal e vice-versa (4 dígitos binários de / para um dígito hexadecimal), e o binário contém muito pouca informação por dígito, hexadecimal é geralmente a maneira preferida para humanos lerem binário, a menos que haja razões para preferir uma representação diferente.
Alguns editores de texto podem ter um modo de editor hexadecimal e alguma heurística que tentaram determinar se um arquivo é texto ou binário e selecionam automaticamente um modo ou outro. Mas isso pode ser difícil de corrigir e não é uma propriedade específica do arquivo que diz se é de um tipo ou de outro.
Alguns clientes de FTP solicitam que você especifique quais terminações de arquivos são usadas para dados de texto . Esses programas alteram o conteúdo do arquivo para corresponder ao sistema operacional da máquina à qual você está conectado, pois o Windows usa uma sequência de caracteres de final de linha diferente ( CR/LF
) do que Linux e Unix (incluindo Mac OS X; LF
).