gellox
-
Total de itens
7 -
Registro em
-
Última visita
Posts postados por gellox
-
-
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 -
Pessoal imaginem a seguinte situação:
Possuo um arquivo binário que o seu conteúdo em 1(um) determinado byte ao converter para decimal deveria ser -10.
Eu consigo ler todos os bytes positivos, porém quando o valor e negativo ele não me retorna o valor exato.
Já li muito e ouvir falar algo sobre complemento de 2 (dois) e/ou sinal de magnitude.
Alguém poderia me ajudar ??
Obrigado
-
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
-
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");
}
-
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");
}
-
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
Upload de um pedaço do arquivo
em Ajax, JavaScript, XML, DOM
Postado
Pessoal,
Sou novo aqui no forum, gostaria de saber se é possivel fazer o upload de apenas um pedaço de arquivo com javascript.
EX: tenho um arquivo de 5GB e gostarai de fazer o upload do primeiro 1MB.
É possivel com javascript?
Obrigado!