summaryrefslogtreecommitdiff
path: root/ToD/ExtracteurIdiot.cpp
blob: fde51340b3051a1f2c0e16dd893b36e817658dfb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>

using namespace std;

int main(int, char **)
{
	int iPosPointeur, iPosTexte;
	char szPath[2][256];
	vector<unsigned char> vFichier;

	cout << "Entrez le nom du fichier :";
	cin >> szPath[0];
	cout << "Entrez le nom du fichier texte :";
	cin >> szPath[1];

	cout << "Entrez la position du pointeur (Hexadeciaml) :";
	cin >> hex >> iPosPointeur;
	cout << "Entrez la position du texte (Hexadeciaml) :";
	cin >> hex >> iPosTexte;	

	ifstream ifFichier(szPath[0], ios::binary);

	if(ifFichier)
	{
		ifFichier.seekg(0, ios::end);
		vFichier.resize(ifFichier.tellg());

		ifFichier.seekg(0, ios::beg);
		ifFichier.read((char *) vFichier.begin(), vFichier.size());
	}

	ofstream ofTexte(szPath[1], ios::binary | ios::trunc);

	for(int i = 0; i < (iPosTexte - iPosPointeur) / 2; i++)
	{
		ofTexte << "<PT" << setw(4) << setfill('0') << i << ">\n";

		for(int j = iPosPointeur + vFichier[iPosPointeur + i * 2] +
			(vFichier[iPosPointeur + i * 2 + 1] * 256); vFichier[j] != 0; j++)
			switch(vFichier[j])
			{
			case 0x01:
				ofTexte << "<NOM:" << (int) vFichier[++j] << ">";
				break;
			case 0x02:
				ofTexte << "<02>";
				break;
			case 0x03:
				ofTexte << "<03>";
				break;
			case 0x04:
               	switch (vFichier[++j])
                    {
                    	case 0x02:
                         	ofTexte << "<VIOLET>";
                              break;
                    	case 0x04:
                        	ofTexte << "<VERT>";
                              break;
			case 0x05:
				ofTexte << "<BLEU>";
				break;
                        case 0x06:
                         	ofTexte << "<JAUNE>";
                              break;
                        case 0x0F:
                         	ofText << "<FINCOULEUR>";
                              break;
                        default:
                         	ofTexte << setw(2) << << setfill('0') << hex << vFichier[j];
                    }
				break;
			case 0x05:
				ofTexte << "<05>";
				break;
			case 0x06:
				ofTexte << "<06>";
				break;
			case 0x0c:
				ofTexte << "<NP>\n";
				break;
			case 0x0a:
				ofTexte.put('\n');
				break;
			default:
				ofTexte.put(vFichier[j]);
			}

		ofTexte << "<FIN>\n\n";
	}

	return 0;
}