O hexview é uma ferramenta de linha de comando para leitura e visualização de arquivos binários em formato hexadecimal, acompanhados de sua representação ASCII. O projeto foi desenvolvido com foco em programação de baixo nível, priorizando desempenho, eficiência no uso de memória, previsibilidade de execução e portabilidade.
Para garantir alta performance e baixo overhead, foram adotadas as seguintes estratégias:
- I/O Bufferizado: Uso de buffers de 64KB para melhor aproveitamento de cache e páginas de memória.
- Lookup Table: Conversão hexadecimal via tabelas estáticas, evitando funções genéricas custosas.
- Bufferização Manual: Montagem das linhas em buffer de stack com uma única escrita por linha.
- Buffering de Saída: Configuração de buffering total no
stdoutpara reduzir syscalls. - Sem Alocação Dinâmica: Uso apenas de memória estática e stack, evitando overhead do heap.
- Linguagem: C (Padrão ISO C11).
- Compilador: GCC.
- Sistema de Build: GNU Make com suporte a geração automática de dependências (.d).
- Ambiente: Compatível com sistemas Unix (POSIX).
Para compilar o projeto, utilize o Makefile fornecido:
makeO programa aceita um caminho de arquivo como argumento:
./hexview <caminho_do_arquivo>├── include/ # Arquivos de cabeçalho (.h)
├── src/ # Implementação (.c)
├── build/ # Artefatos de compilação (gerado automaticamente)
├── Makefile # Script de automação de build
└── README.md # Documentação técnicaPara garantir a integridade do visualizador, utilize os seguintes comandos para gerar arquivos de teste:
1. Teste de ASCII e Alinhamento:
echo "Teste de visualizacao para o projeto hexview." > teste_texto.txt
./hexview teste_texto.txt2. Teste de Dados Binários (1MB):
head -c 1048576 /dev/urandom > teste_aleatorio.bin
time ./hexview teste_aleatorio.bin > /dev/null3. Teste de Padding (Fim de arquivo):
echo -n "1234567890" > teste_curto.bin
./hexview teste_curto.bin- Implementação de flags para definir o tamanho da linha (atualmente fixo em 16 bytes).
- Suporte para colorização de bytes via sequências de escape ANSI.
- Implementação de busca por padrões hexadecimais (Grep-like).
- Opção de limitar a visualização a um range específico de bytes (seek/limit).
Este projeto é distribuído sob os termos da Licença MIT. Consulte o arquivo LICENSE para mais detalhes.