Estou precisando ler uns arquivos binários e estou utilizando a biblioteca Qt, que no fundo é C++. Mas o problema que estou tendo não importa muito com a linguagem utilizada.
O que eu sei sobre arquivos binários:
É necessário saber, de antemão, quais bytes correspondem a que dados. Na documentação do arquivo que desejo abrir achei algo do tipo: Nesse arquivo existem 20 'words', cada uma com 32 bits (ou seja 4 bytes) sendo que as 10 primeiras são ponto flutuante e as 10 próximas são números inteiros.
então ao ler o arquivo, pensei basta ler 10 floats e 10 ints na sequência que tá tudo certo:
Acontece que ao ler os floats, me parece que ele não está pegando de 4 em 4 bytes tanto é que os ints ficam todos zoneados (porque li na sequencia). Ao imprimir os floats recebo coisas do tipo:
-inf
-nan
-e uns números da ordem de 10 elevado a 30
Ao ler os floats como ints (então lendo 20 ints) os ints ficam corretos mas os floats ficam com valores não tão grandes como antes, porem errados.
Pergunta
Dandandin
Olá galera,
Estou precisando ler uns arquivos binários e estou utilizando a biblioteca Qt, que no fundo é C++. Mas o problema que estou tendo não importa muito com a linguagem utilizada.
O que eu sei sobre arquivos binários:
É necessário saber, de antemão, quais bytes correspondem a que dados. Na documentação do arquivo que desejo abrir achei algo do tipo: Nesse arquivo existem 20 'words', cada uma com 32 bits (ou seja 4 bytes) sendo que as 10 primeiras são ponto flutuante e as 10 próximas são números inteiros.
então ao ler o arquivo, pensei basta ler 10 floats e 10 ints na sequência que tá tudo certo:
[float][float]..[float][float][int][int]...[int][int]
Já que ambos tem 4 bytes.
Acontece que ao ler os floats, me parece que ele não está pegando de 4 em 4 bytes tanto é que os ints ficam todos zoneados (porque li na sequencia). Ao imprimir os floats recebo coisas do tipo:
-inf
-nan
-e uns números da ordem de 10 elevado a 30
Ao ler os floats como ints (então lendo 20 ints) os ints ficam corretos mas os floats ficam com valores não tão grandes como antes, porem errados.
Estou fazendo algo errado? o raciocínio e tal..
valeu
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.