Blog do TaQ

Lendo um arquivo binário com o shell

Publicado em Developer

Esses dias precisei ler de um arquivo um valor inteiro (123, por exemplo) em um script shell. Até aí nenhum problema, mas p arquivo origem era um arquivo binário, ou seja, o inteiro estava com a representação binária dele lá dentro, ocupando (no meu caso aqui, usando 32bits) 4 bytes, e não escrito como uma string "123".

Vamos exemplicar fazendo um pequeno programa em C que vai escrever o inteiro e também um double:

E agora um outro programa para ler o dito cujo:

Ok, agora vamos ver como ler esses valores pelo shell. Vejam bem: vamos ler os valores, escrever é assunto para outro artigo. Para isso, vamos utilizar o comando od, que eu não conhecia até essa semana, executando dessa maneira:

E agora, lendo o double, indicando que é para serem lidos 8 bytes, pulando os 4 iniciais:

Utilizei o tr para remover espaços em branco e o printf para formatar o resultado do double, que é retornado como um valor exponencial de 4,567890000000000e+05.

Essas foram algumas das primeiras opções que encontrei para fazer esse tipo de coisa, e resolveram meu problema. Se alguém tiver alguma dica sobre outros jeitos de fazer, refactoring, etc, comentários são bem-vindos. :-)


Tags:


Comentários

Sem nenhum comentário.

comments powered by Disqus

Twitter