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

Conversão de binário para decimal - Big endian


gellox

Pergunta

Pessoal, espero que possam me ajudar!

Sou novo na linguagem. Gostaria de saber como faço para ler um arquivo binário, porém só quero começar a ler após 3000 bytes (preciso fazer um skip). O arquivo esta agrupado em grupos de 4 bytes, ou seja tenho que ler de 4 em 4 bytes e fazer o BIG ENDIAN. para depois transformar em decimal. OBS: Arquivo grande 10 GB, tenho que ler sem colocar todo o arquivo na memória.

Desde já, obrigado pela ajuda!

Atenciosamente!

Gellox

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Pessoal, eu peguei grupos de 4 bytes, só que estou fazendo a conversão na hora de imprimir na tela.

o problema é que preciso fazer uma conta antes de imprimir

em shell fiz essa logica abaixo e funcionou, mas vale considerar que as variáveis já haviam sido convertidas para decimal.

em C , gostaria de saber se existe alguma função já pronta para converter as variáveis de binário para decimal. assim farei a conta abaixo.

( a * 256 *256 *256) + (b *256 * 256 ) + (c *256) +d

segue o código imprimindo em tela:

int main ()

{

int a,b,c,d,total;

FILE *fp;

fp = fopen("a.bin", "rb");

if (fp==NULL)

{

printf("Erro ao abrir arquivo!!!\n");

system("pause");

exit(1);

}

fseek(fp, 3000, SEEK_CUR);

while(1)

{

a=fgetc(fp);

b=fgetc(fp);

c=fgetc(fp);

d=fgetc(fp);

if (a==EOF & b==EOF & c==EOF & d==EOF )

break;

printf("%d,%d,%d,%d\n",a,b,c,d);

//getch ();

}

fclose(fp);

system("pause");

}

Editado por gellox
Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, consegui resolver.. eu estava fazendo confusão.mas segue anexo o código:

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

int main ()

{

int a,b,c,d,num,dec,total;

char e;

FILE *fp;

fp = fopen("arq.bin", "rb");

if (fp==NULL)

{

printf("Erro ao abrir arquivo!!!\n");

system("pause");

exit(1);

}

fseek(fp,3000 , SEEK_CUR);

while(1)

{

a=fgetc(fp);

b=fgetc(fp);

c=fgetc(fp);

d=fgetc(fp);

total=(a * 256 * 256 * 256) + (b * 256 * 256) + (c * 256) + d;

if (a==EOF & b==EOF & c==EOF & d==EOF )

break;

printf("%d,%d,%d,%d,%d\n",a,b,c,d,total);

getch ();

}

fclose(fp);

system("pause");

}

Editado por gellox
Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, o código que postei abaixo só funciona para números decimais inteiros positivos.

Alguém sabe como fazer para o código exibir números negativos também??

Ele até exibe um valor mas não o valor exato

Obrigado

Editado por gellox
Link para o comentário
Compartilhar em outros sites

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...