Pesquisar na Comunidade
Mostrando resultados para as tags ''binario big endian''.
Encontrado 1 registro
-
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