bonjour ! j'essaye de faire un programme qui me convertit un fichier binaire(.dat) en hexadécimale ! mais j'ai un petit soucis et j'aurait besoin de votre aide voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include<stdlib.h>
#include<stdio.h>
 
 
void BinHexaCON(char *hexa,int *x0);
 
int main()
{
    FILE *fichier_lu = NULL;
    FILE *fichier_convertit;
    char bin[8];
    int b[10],i,n;
    char caracter = 0;
 
        /*ouvertur du fichier a convertir*/
    fichier_lu = fopen("ACQ_b05698858.dat","rb");
 
    if(fichier_lu != NULL)
    {
 
        /*fichier accueillant la convertion hexa*/
        fichier_convertit = fopen("ConversionUP.txt","w+");
        if(fichier_convertit != NULL)
        {
            do {
                    caracter = fgetc(fichier_lu);
                    /* On vérifie que le caractère lu soit bien en valeur binaire */
                    if ((caracter >= '0') && (caracter <= '1'))
                    {
                        //convertion
                        bin[0] = caracter;
                        //BinHexaCON();
                        char *hexa;
                        int *x0;
                       BinHexaCON(&hexa[0], &b[3], &b[2], &b[1], &b[0]);
                       // fprintf(fichier_convertit,"%s",/*b[0],b[1],b[2],b[3]*/fichier_convertit);
                        fprintf(fichier_convertit,"%d",i,n);//"%d%d%d%d",b[3],b[2],b[1],b[0]);
                       // fprintf(fichier_convertit,"%s",fichier_convertit);
                    }
                } while (caracter != EOF);
 
        }
    }
 
}
/* fonction convertissant un caractère héxadécimal en binaire sur 4 bits. Retourne -1 si le
 * caractère à convertir n'est pas valide, 0 sinon. */
int BinToHexa (int bin,char *x0)
{
    switch (bin)
    {
        case 0000 : *x0 = '0';
                    break;
        case 0001 : *x0 = '1';
                    break;
        case 0010 : *x0 = '2';
                    break;
        case 0011 : *x0 = '3';
                    break;
        case 0100 : *x0 = '4';
                    break;
        case 0101 : *x0 = '5';
                    break;
        case 0110 : *x0 = '6';
                    break;
        case 0111 : *x0 = '7';
                    break;
        case 1000 : *x0 = '8';
                    break;
        case 1001 : *x0 = '9';
                    break;
        case 1010 : *x0 = 'A';
                    break;
        case 1011 : *x0 = 'B';
                    break;
        case 1100 : *x0 = 'C';
                    break;
        case 1101 : *x0 = 'D';
                    break;
        case 1110 : *x0 = 'E';
                    break;
        case 1111 : *x0 = 'F';
                    break;
        default : return -1;
    }
   //return 10;
}
 
 
 
 
            /*
            while(caracter != EOF)
            {
                caracter = fgetc(fichier_lu);
 
 
                if ((caracter >= '0') && (caracter <= '1'))
                {
                    goto convertion;
                }
                else
                {
                    ;
                }
 
                if((caracter != EOF))
        {
                    bin[0] = caracter;
                    BinHexa();
                    fprintf(fichier_convertit,"%d%d%d%d");
                }
                else
                {
                    ;
                }*/