Skip to content

maurlio/hexview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HexView

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.

Motivação Técnica e Otimizações

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 stdout para reduzir syscalls.
  • Sem Alocação Dinâmica: Uso apenas de memória estática e stack, evitando overhead do heap.

Tecnologias Utilizadas

  • 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).

Como Compilar

Para compilar o projeto, utilize o Makefile fornecido:

make

Como Executar

O programa aceita um caminho de arquivo como argumento:

./hexview <caminho_do_arquivo>

Estrutura de Diretórios

├── 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écnica

Validação e Testes

Para 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.txt

2. Teste de Dados Binários (1MB):

head -c 1048576 /dev/urandom > teste_aleatorio.bin
time ./hexview teste_aleatorio.bin > /dev/null

3. Teste de Padding (Fim de arquivo):

echo -n "1234567890" > teste_curto.bin
./hexview teste_curto.bin

Possíveis Melhorias Futuras

  • 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).

Licença

Este projeto é distribuído sob os termos da Licença MIT. Consulte o arquivo LICENSE para mais detalhes.

About

Visualizador CLI de binários em hexadecimal e ASCII.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors