elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Interpretar archivo como numero entero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Interpretar archivo como numero entero  (Leído 3,762 veces)
Nanoc

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Interpretar archivo como numero entero
« en: 4 Junio 2010, 00:43 am »

Hola, viendo que nadie es capaz de ayudarme en el lenguaje vb6, intentare hacerlo en C++. Comienzo explicando lo que necesito:

Cualquier fichero en un ordenador esta compuesto unicamente de bits, el sistema binario es un sistema de numeracion, es decir yo tendria que ser capaz de leer un archivo del disco duro y obtener en memoria un UNICO numero, soy consciente de que un archivo de varios megabytes podria contener un numero de longitud inmensa.

Lo que necesito es abrir un archivo, leerlo, y realizar una simple operacion matematica, en vb consegui hacerlo usando variables long o double y abriendo en archivo en modo binario, pero una variable double tiene un maximo de longitud y por supuesto a poco que pese el archivo la superas.

Para este problema creo que con los punteros de C se debe poder hacer sin problemas.

Alguien puede echarme una mano? Gracias.


« Última modificación: 11 Junio 2010, 14:48 pm por Nanoc » En línea

SirLanceCC


Desconectado Desconectado

Mensajes: 1.093


Ver Perfil WWW
Re: Interpretar archivo como numero entero
« Respuesta #1 en: 4 Junio 2010, 06:22 am »

BUeno, en un unsigned long long int (que es el tipo de entero mas grande que conozco en C) podrías almacenar el entero de un archivo de 8 bytes (64bits) lo cual realmente es nada.

Realmente no veo el sentido de todo esto, puesto que si un archivo es un número binario enorme, y lo cargas en memoria tienes el identificador *unico* de cada archivo, pero en sí es el mismo archivo, solo que en memoria. Es decir, igual podrías hacer un fread() o algo así, y habría archivos que no quepan en tu memoria.

De todos modos, lo que deberías hacer para manejar números muy grandes es ocupar una base numérica muy grande, como 264, e implementar los algoritmos de la primaria. Revisa la numeración Maya (era base 20) y te darás más o menos una idea de lo que te quiero decir.


En línea

Lambda


Desconectado Desconectado

Mensajes: 371



Ver Perfil WWW
Re: Interpretar archivo como numero entero
« Respuesta #2 en: 4 Junio 2010, 13:01 pm »

Echale un ojo a esto.

http://mattmccutchen.net/bigint/

de igual manera no se para que puede servir hacer algo asi aparte de por curiosidad xD
En línea

Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Interpretar archivo como numero entero
« Respuesta #3 en: 4 Junio 2010, 13:39 pm »

Me gustaría poder entender lo que quieres hacer con el archivo , lo que tengo claro es que quieres cargarlo en memoria completo , podrias usar un array para almacenarlo y hacer con él lo que necesitas , te lo has planteado ?
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Interpretar archivo como numero entero
« Respuesta #4 en: 4 Junio 2010, 14:03 pm »

¿Estas tratando da calcular un hash?
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Nanoc

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: Interpretar archivo como numero entero
« Respuesta #5 en: 4 Junio 2010, 21:10 pm »

Citar
¿Estas tratando da calcular un hash?
Mmm... digamos que no coincide con la definicion de hash,pero es mas o menos algo parecido, lo unico que necesito es hacer una operacion matematica con un numero entero, si puedo hacerlo sin cargarlo de golpe en memoria bien, pero necesito que el archivo entero sea interpretado como un unico numero, por muy largo que sea.

Citar
De todos modos, lo que deberías hacer para manejar números muy grandes es ocupar una base numérica muy grande, como 264, e implementar los algoritmos de la primaria.

Me parece una bonita forma de cifrar un fichero, pero no me interesa el resultado.

Echale un ojo a esto.

http://mattmccutchen.net/bigint/

de igual manera no se para que puede servir hacer algo asi aparte de por curiosidad xD

Eso si parece que puede servirme, solo una duda, la limitacion usando esa clase esta en la cantidad de memoria fisica o virtual?

Creeme que yo si que tengo una muy buena idea, no es por curiosidad XD.

Si alguien tiene alguna idea (Eternal que se que esto se te da bien) sobre como podria evitar tener que cargar el fichero de golpe en memoria para saltarme esa limitacion, agradecida sera su sugerencia

Muchisimas gracias.

PD: Posteare el proyecto completo cuando consiga que funcione.

EI: juntando mensajes.

Tengo un problemilla de tipos XD
Código:
     int tama;
     BigInteger data;
     tama = FileSize(fpath);
     ifstream myFile(fpath, ios::in | ios::binary);
     char buffer[tama];
     myFile.read (buffer,tama);
     myFile.close();
     data = buffer;
     return 0;

El problema esta al pasar el valor del array al biginteger, he probado usando copymemory pero no me deja especificar un biginteger como direccion de destino, alguna idea?
« Última modificación: 6 Junio 2010, 02:54 am por Eternal Idol » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Interpretar archivo .dmp
Windows
casietes 1 5,480 Último mensaje 3 Mayo 2011, 20:09 pm
por Randomize
como interpretar archivo capturado?
Hacking
elnene68 1 2,289 Último mensaje 26 Abril 2012, 15:18 pm
por Breixo
Detectar si un numero es entero o no « 1 2 »
Programación C/C++
Caster 11 6,265 Último mensaje 2 Noviembre 2012, 13:37 pm
por BatchianoISpyxolo
Acceder de forma individual a cada digito de un número entero(sin sprintf)
Programación C/C++
DanielPy 4 2,697 Último mensaje 16 Noviembre 2013, 02:36 am
por DanielPy
Descomponer un numero entero en lenguaje C. « 1 2 »
Programación C/C++
NOB2014 10 13,320 Último mensaje 1 Abril 2014, 20:59 pm
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines