Ir para conteúdo
Fórum Script Brasil
  • 0

Lendo arquivo Binário (big Endian)


gellox

Pergunta

Olá, pessoal!

Estou com um probleminha e espero que possam me ajudar!

Estou tentando ler um arquivo em binário, porém sei que o arquivo esta em big endian, meu grande problema é na hora de ler o sinal negativo. fiz um código que funciona para positivo mas não traz o valor correto para negativo, segue o código abaixo e o link do arquivo http://forum.clubedohardware.com.br/attachment.php?attachmentid=95343&d=1385465321:

//------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <math.h>
FILE *dat;
int a,b,c,d,total,pulo,tam;

void getch(void)
{
system("pause");
}

int main ( )
{
dat=fopen("arquivo.txt", "rb");
if (dat==NULL)
{
printf("\n");
printf("!!! ERRO !! Verifique se o arquivo de saida não existe, caso exista favor remover ou informar outro nome para o arquivo !!!\n");
getch();
}
pulo = 0;
printf("informe a literal: ");
scanf("%d",&pulo);
printf("informe o tamanho da literal: ");
scanf("%d",&tam);
rewind(dat);
fseek(dat,pulo,SEEK_CUR);
if (tam==2)
{
a=fgetc(dat);
b=fgetc(dat);
printf("primeiro byte = %d,\n",a);
printf("segundo byte = %d,\n", B);
total=(a * 256) + b;
printf("resultado = %d,\n",total);
}
else if(tam==4)
{
a=fgetc(dat);
b=fgetc(dat);
c=fgetc(dat);
d=fgetc(dat);
printf("primeiro byte = %d,\n",a);
printf("segundo byte = %d,\n", B);
printf("terceiro byte = %d,\n",c);
printf("quarto byte = %d,\n",d);
total=(a * 256 * 256 * 256) + (b * 256 * 256) + (c * 256) + d;
printf("resultado = %d,\n",total);
}
else
{
printf("tamanho invalido\n");
}
getch();

}
//-----------------------------

o que ocorre:
informe a literal: 0
informe o tamanho da literal: 4
resultado = 481 //CORRETO

informe a literal: 28
informe o tamanho da literal: 2
resultado = 1 //CORRETO

informe a literal: 68
informe o tamanho da literal: 2
resultado = 55536 //ERRADO, VALOR CORRETO = -10000

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...