Lendo um arquivo binário com o shell
Publicado em Developer
arquivo bash binário shell
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. :-)
Comentários
Comentários fechados.
Sem nenhum comentário.
Artigos anteriores
- Pull requests em modo raiz - sex, 22 de dezembro de 2023, 09:57:09 -0300
- Qual a idade do seu repositório? - ter, 27 de dezembro de 2022, 12:50:35 -0300
- Utilizando ctags em projetos Rails mais recentes - qui, 24 de junho de 2021, 08:23:43 -0300
- Fazendo o seu projeto brotar - seg, 15 de julho de 2019, 08:57:05 -0300
- Learn Functional Programming with Elixir - sex, 02 de março de 2018, 18:47:13 -0300
- Ambiente mínimo - Driver Driven Development - qua, 23 de agosto de 2017, 15:15:03 -0300
- Ambiente mínimo - repositórios de código - dom, 16 de abril de 2017, 13:02:14 -0300
- Ambiente mínimo - terminal e navegador - dom, 02 de abril de 2017, 21:43:29 -0300
- Utilizando muitas gems no seu projeto? - sáb, 29 de outubro de 2016, 11:57:55 -0200
- Desenvolvedores e inteligência artificial - seg, 11 de julho de 2016, 09:09:38 -0300