O que é um editor hexadecimal (e quando precisas mesmo de um)
Alguém te disse para “veres isso num editor hexadecimal”, ou procuraste por um visualizador hexadecimal e vieste aqui parar sem teres bem a certeza do que é um. Não faz mal. Um editor hexadecimal é um programa que te mostra o conteúdo em bruto de um ficheiro, byte a byte, em vez de tentar interpretá-lo como um documento, uma imagem ou uma folha de cálculo. É o mais perto que consegues chegar de olhar exatamente para o que está guardado em disco.
Porquê hexadecimal, especificamente
Um ficheiro, qualquer ficheiro, é apenas uma sequência de bytes, e cada byte é um número de 0 a 255. Podias mostrar esses números em decimal, mas 0 a 255 ocupa até três dígitos e não fica alinhado de forma limpa. Podias mostrá-los em binário, mas um único byte são oito dígitos de 1s e 0s, o que é difícil de percorrer com o olhar. O hexadecimal (base 16, usando os dígitos 0-9 e as letras A-F) é o compromisso: cada byte cabe em exatamente dois caracteres, de 00 a FF, por isso uma linha de bytes alinha-se numa grelha limpa e fácil de percorrer. É essa a razão inteira pela qual “hex” é o padrão, e não o decimal ou o binário. É uma escolha de legibilidade, não uma exigência técnica.
Para o que estás na verdade a olhar
Abre qualquer ficheiro num editor hexadecimal e vais ver três coisas lado a lado, para os mesmos dados:
- Deslocamento: a que distância estás dentro do ficheiro, normalmente mostrado também em hex, para que possas saltar de volta a uma posição específica mais tarde.
- Bytes hexadecimais: os dados em si, dois caracteres por byte, agrupados em linhas (habitualmente 16 bytes por linha).
- Vista de texto (ASCII): os mesmos bytes reinterpretados como caracteres, para a parte do ficheiro que por acaso seja texto legível. Os bytes que não são texto costumam aparecer como um ponto de marcação.
Essa terceira coluna é a razão pela qual caminhos de ficheiros, rótulos e strings de versão são muitas vezes visíveis mesmo em ficheiros que são sobretudo dados binários: qualquer texto embutido aparece nessa coluna, ainda que o ficheiro no seu todo não seja um ficheiro de texto.
Quando precisarias mesmo de um
A maioria das pessoas passa a vida inteira sem abrir um editor hexadecimal, e isso é completamente normal. As situações em que é genuinamente a ferramenta certa são específicas:
- A extensão de um ficheiro não corresponde ao seu conteúdo real. Alguém mudou o nome de um
.zippara.doc, ou não tens a certeza de que um ficheiro.dbé mesmo uma base de dados. Os primeiros bytes da maioria dos formatos são uma assinatura distintiva (o PNG começa com89 50 4E 47, o ZIP com50 4B), e uma vista hexadecimal confirma-o em segundos. - Um ficheiro está corrompido e queres saber como. Uma transferência truncada, uma cópia com erros, um cabeçalho que foi substituído. Ver os bytes em bruto diz-te se o dano está no início, no fim, ou espalhado.
- Estás a depurar algo que lê ou escreve dados binários, um formato de save, um ficheiro de configuração, um protocolo de rede, e precisas de confirmar exatamente que bytes estão a ser produzidos.
- Queres verificar um valor específico, como confirmar que quatro bytes representam mesmo o tamanho de ficheiro que esperas, ou verificar um carimbo temporal, sem confiar numa ferramenta caixa-preta para o interpretar corretamente.
- Curiosidade. Há muita gente que abre um editor hexadecimal uma vez só para ver o aspeto que um formato de ficheiro familiar tem na realidade por baixo. É uma razão completamente legítima.
Se nenhuma destas descreve o que estás a fazer, provavelmente não precisas de um, e não faz mal. É uma ferramenta de especialista para um tipo específico de pergunta.
O que torna um editor hexadecimal bom, não apenas funcional
Assim que precisas mesmo de um, as ferramentas fazem quase todas o mesmo trabalho básico: mostram bytes, deixam-te percorrer, deixam-te pesquisar. As diferenças que contam têm a ver com segurança e clareza, não com a contagem bruta de funcionalidades. O Hex Fiend é a opção gratuita e de código aberto com que a maioria dos utilizadores de Mac acaba por predefinição, e é genuinamente capaz, sobretudo com ficheiros muito grandes. O Hexter adota uma abordagem mais estreita e mais cautelosa: todos os ficheiros abrem só de leitura, por isso olhar para algo desconhecido não acarreta qualquer risco, a edição é um passo explícito e reversível em vez do estado predefinido, e os formatos de ficheiro comuns (PNG, ZIP, Mach-O, WAV, SQLite) têm a sua estrutura interpretada automaticamente, em vez de te deixarem a descodificar cabeçalhos à mão.
Qual deles queres depende do que estás a fazer. Se estás a comparar dois ficheiros de vários gigabytes byte a byte, a comparação do Hex Fiend foi feita para essa escala. Se só precisas de confirmar o que um ficheiro é de facto, verificar um punhado de bytes, ou fazer uma edição pequena e cuidadosa sem te preocupares em estragar o original por acidente, é essa a situação para que o Hexter foi feito.