Retomando la programación
Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06
- largeroliker
- Administrador
- Mensajes: 8286
- Registrado: 03 Sep 2009, 09:46
- PSN ID: larger0o
- Gamertag Xbox Live: larger0o
- Steam ID: larger0o
- Twitter: larger0o
- Ubicación: Málaga
- Contactar:
Re: Retomando la programación
Oka. Pero he cambiado los permisos y sigue exactamente igual, he ido manualmente como root a hacerlo, he activado la casilla de "Ejecutar como programa" pero no ejecuta NADA...incluso me llega a decir que no tengo ningún programa asociado 0o
PD: Arreglada la carga de archivos externos, ya he hecho para que el Eclipse los encuentre. Muchas gracias Yn$an€.
PD: Arreglada la carga de archivos externos, ya he hecho para que el Eclipse los encuentre. Muchas gracias Yn$an€.

Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
- largeroliker
- Administrador
- Mensajes: 8286
- Registrado: 03 Sep 2009, 09:46
- PSN ID: larger0o
- Gamertag Xbox Live: larger0o
- Steam ID: larger0o
- Twitter: larger0o
- Ubicación: Málaga
- Contactar:
Re: Retomando la programación
Más de programación. He pasado de escribir el valor en pantalla a lo que realmente voy a hacer, que es copiarlo a otro archivo.
Ya estoy con el DOCUMENT de testeo. Éste empieza con una serie
lo que en hexadecimal por completo es
lo malo es que me vuelca únicamente DOC, ya que ese espacio y los valores nulos son los que joden el invento T.T
Ya estoy con el DOCUMENT de testeo. Éste empieza con una serie
Código: Seleccionar todo
DOC(espacio)(00 00 01 00 00 00 )SCUS99999
lo que en hexadecimal por completo es
Código: Seleccionar todo
44 4F 43 20 00 00 01 00 00 00 53 43 55 53 39 39 39 39 39
lo malo es que me vuelca únicamente DOC, ya que ese espacio y los valores nulos son los que joden el invento T.T
Código: Seleccionar todo
/*
* extractor.cpp
*
* Creado el: 16/03/2011
* Autor: largeroliker
* Veremos en qué queda esto.
* Por el momento vamos a intentar hacer un extractor de imágenes de DOCUMENT.DAT comunes.
*/
#include <iostream>
#include <fstream>
using namespace std;
char cadena[100];
int main()
{
// Abrimos el archivo DOCUMENT.DAT
ifstream f("DOCUMENT.DAT", ifstream::in| ifstream::binary);
// Función de depuración. Si por cualquier motivo no lo encuentra devuelve error.
if (!f)
{
cout << "fallo" << endl;
return -1;
}
//Abrimos ahora el archivo de destino.
ofstream f2;
f2.open ("output", ofstream::out | ofstream::binary);
// Leemos
f >> cadena;
// y pasamos al output
f2 << cadena;
// Y los cerramos
f.close();
f2.close();
return 0;
}

Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
Re: Retomando la programación
El operador >> no te va a servir para tu propósito. Busca "manejo de archivos en modo binario", te aclarará el método que necesitas (ya he visto el cambio en el código, que conste). Tu método, es para manejo de cadenas. Se parará en cuanto se tope con el primer 0x00.
Creo que para empezar sería bueno que siguieras el consejo de m0skit0 y empezaras con código en c. Luego pasa a c++ (sólo lo de leer los archivos, no todo el programa).
En cuanto al ejecutable... Ni idea. Ponle una pausa al final y prueba (como más te guste, importa funciones de control, o más fácil, haz un scanf()), en serio.
La función de lectura si quieres te la doy directamente, pero créeme que no es tan fácil pillar todas las sutilezas que tiene el tema.
Y una cosa. Para este tipo de tareas, necesitas siempre conocer los formatos con los que se trabaja.
SLDS
Creo que para empezar sería bueno que siguieras el consejo de m0skit0 y empezaras con código en c. Luego pasa a c++ (sólo lo de leer los archivos, no todo el programa).
En cuanto al ejecutable... Ni idea. Ponle una pausa al final y prueba (como más te guste, importa funciones de control, o más fácil, haz un scanf()), en serio.
La función de lectura si quieres te la doy directamente, pero créeme que no es tan fácil pillar todas las sutilezas que tiene el tema.
Y una cosa. Para este tipo de tareas, necesitas siempre conocer los formatos con los que se trabaja.
SLDS
... after all, we're all alike.
- largeroliker
- Administrador
- Mensajes: 8286
- Registrado: 03 Sep 2009, 09:46
- PSN ID: larger0o
- Gamertag Xbox Live: larger0o
- Steam ID: larger0o
- Twitter: larger0o
- Ubicación: Málaga
- Contactar:
Re: Retomando la programación
Yn$an€ escribió:El operador >> no te va a servir para tu propósito. Busca "manejo de archivos en modo binario", te aclarará el método que necesitas (ya he visto el cambio en el código, que conste). Tu método, es para manejo de cadenas. Se parará en cuanto se tope con el primer 0x00.
Creo que para empezar sería bueno que siguieras el consejo de m0skit0 y empezaras con código en c. Luego pasa a c++ (sólo lo de leer los archivos, no todo el programa).
La verdad es que puse modo binario porque texto está claro que no es, y es lo más parecido a hexadecimal que he encontrado. Si hay alguna forma de abrirlo como hexadecimal avisadme xD
Le echaré un vistazo a eso que comentas. Piensa que lo más avanzado que he aprendido es un inicio a arrays y registros...suponía esto más sencillo, pero voy a intentar llevarlo para alante lo mejor posible

Yn$an€ escribió:En cuanto al ejecutable... Ni idea. Ponle una pausa al final y prueba (como más te guste, importa funciones de control, o más fácil, haz un scanf()), en serio.
Ahora que he hecho el cambio y no muestra los datos sino que los vuelca...he visto que funcionaba sin yo saberlo xD
Yn$an€ escribió:La función de lectura si quieres te la doy directamente, pero créeme que no es tan fácil pillar todas las sutilezas que tiene el tema.
Hombre, las cosas hechas no me gustan, prefiero ir aprendiendo hasta llegar a ellas...aunque las pistas no hacen mal, no

Yn$an€ escribió:Y una cosa. Para este tipo de tareas, necesitas siempre conocer los formatos con los que se trabaja.
Um, a qué te refieres? Si te refieres al formato hexadecimal, ya tengo costumbre de trabajar con él, ya he hecho chapucillas por ahí...

Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
Re: Retomando la programación
largeroliker escribió:La verdad es que puse modo binario porque texto está claro que no es, y es lo más parecido a hexadecimal que he encontrado. Si hay alguna forma de abrirlo como hexadecimal avisadme xD
Le echaré un vistazo a eso que comentas. Piensa que lo más avanzado que he aprendido es un inicio a arrays y registros...suponía esto más sencillo, pero voy a intentar llevarlo para alante lo mejor posible
A ver, da igual como lo ves. La codificación no cambia. Bianario, decimal o hexadecimal son representaciones abstractas del mismo concepto. Da igual a ese efecto en que modo lo abras. El operador >> se para en 0x00.
El método es read(). A ti te queda descubrir como funciona.
largeroliker escribió:Um, a qué te refieres? Si te refieres al formato hexadecimal, ya tengo costumbre de trabajar con él, ya he hecho chapucillas por ahí...
Me refiero al formato interno, si quieres a la estructura del archivo. Todos los archivos, o casi todis, presentan marcadores o estructuras específicas que sirven para manejarlos. En cierto modo es esencial.
... after all, we're all alike.
Re: Retomando la programación
Obvio que al darle doble click no veas nada, vice. ¿Qué quieres que se vea si no has puesto nada que se vea?
El programa se ejecuta. Si quieres asegurarte dale a ejecutar en terminal, aunque así también se cerrará el terminal al acabar el programa.
Igualmente no me seas Windowsero, las cosas se prueban en el terminal, no con "doble click"

Igualmente no me seas Windowsero, las cosas se prueban en el terminal, no con "doble click"


- largeroliker
- Administrador
- Mensajes: 8286
- Registrado: 03 Sep 2009, 09:46
- PSN ID: larger0o
- Gamertag Xbox Live: larger0o
- Steam ID: larger0o
- Twitter: larger0o
- Ubicación: Málaga
- Contactar:
Re: Retomando la programación
Yn$an€ escribió:largeroliker escribió:La verdad es que puse modo binario porque texto está claro que no es, y es lo más parecido a hexadecimal que he encontrado. Si hay alguna forma de abrirlo como hexadecimal avisadme xD
Le echaré un vistazo a eso que comentas. Piensa que lo más avanzado que he aprendido es un inicio a arrays y registros...suponía esto más sencillo, pero voy a intentar llevarlo para alante lo mejor posible
A ver, da igual como lo ves. La codificación no cambia. Bianario, decimal o hexadecimal son representaciones abstractas del mismo concepto. Da igual a ese efecto en que modo lo abras. El operador >> se para en 0x00.
El método es read(). A ti te queda descubrir como funciona.
Ya he encontrado una instrucción para que lea algo más, ahora el espacio entra, los valores 0x00 no. Estoy en la búsqueda de un tipo que almacene estos valores, ya la expresión es tal que
Código: Seleccionar todo
f2.write(reinterpret_cast<char *>(&cadena),
sizeof(unsigned));
con sizeof(char) me salía una D, con éste me sale DOC(espacio). El de lectura es el mismo, f.read.
Yn$an€ escribió:largeroliker escribió:Um, a qué te refieres? Si te refieres al formato hexadecimal, ya tengo costumbre de trabajar con él, ya he hecho chapucillas por ahí...
Me refiero al formato interno, si quieres a la estructura del archivo. Todos los archivos, o casi todis, presentan marcadores o estructuras específicas que sirven para manejarlos. En cierto modo es esencial.
Ah, claro, la estructura de estos archivos es bastante simple según se ve hexadecimalmente. Se trata de una cabecera que incluye la ID del juego y que aquí se desecha, y un número de imágenes PNG "tal cual" una detrás de otra. La idea supongo que la habrás visto ya, es leer el archivo, desechar la cabecera, y empezar a copiar desde el comienzo de la imagen (PNG) hasta el comienzo de la siguiente, donde abre nuevo archivo, o hasta el final del documento.
m0skit0 escribió:Obvio que al darle doble click no veas nada, vice. ¿Qué quieres que se vea si no has puesto nada que se vea?El programa se ejecuta. Si quieres asegurarte dale a ejecutar en terminal, aunque así también se cerrará el terminal al acabar el programa.
Igualmente no me seas Windowsero, las cosas se prueban en el terminal, no con "doble click"
En el mundo Windows cuando se ejecuta un archivito de éstos se abre una terminal para ello, creía que se comportaría igual

EDITO: Con siezeof(double) me saca ya 8 bytes, 0x00 incluidos

Creo que ya es hora de pensar en los bucles para abarcar todo el texto.

Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
Re: Retomando la programación
Eeeeeeeeeeh, si, pero no hay que poner sizeof(xxxx), sino el tamaño de los datos que quieres leer.
... after all, we're all alike.
- largeroliker
- Administrador
- Mensajes: 8286
- Registrado: 03 Sep 2009, 09:46
- PSN ID: larger0o
- Gamertag Xbox Live: larger0o
- Steam ID: larger0o
- Twitter: larger0o
- Ubicación: Málaga
- Contactar:
Re: Retomando la programación
Ah genial, lo pongo en número normal (16) o en alguna otra notación (0x16, o del estilo)?

Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
Re: Retomando la programación
Te repito, y piensalo, que las representaciones no significan nada. Pero te será más fácil en hex.
... after all, we're all alike.