Bonjours j'ai créer une fonction compression mais je voudrai savoir si je peux la modifier pour qu'elle soit plus courte mais toujours fonctionnels ;

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
int decompression(unsigned char source[], int nb, unsigned char dest[])
{
int i,j,l,dec;
i,j,l,dec = 0;
 
for (i=0;i<nb;i++)
{
if (source[i]== 0xFD)
{
if((source[i+1] == 0xFD)||(source[i+1] == (0xFE)))
{
dest[1-dec]=source[i+1];
i=i+2;
dec = dec+1;
}
}
if (source[i]==0xFE)
{
for (j=0;j<(source[i+1]);j++)
{
dest[i-dec] = source[i+2];
dec = dec-1;
}
dec = dec+3;
i= i+2;
}
else
{
dest[i-dec] = source[i];
}
}
return nb;
}
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
 
int main
{
unsigned char toto[50]={0x78,0x56,0x74,0xFE,0x02,0x10,0x41,0x78,0xFD,0xFE,0x36,0xFD,0xFD,0xFE,0x07,0x25};
unsigned char test[50];
int bn;
bn=50;
 
 
printf("\n");
printf("Tableau decompression :\n");
bn =(decompression(toto, bn, test));
dump(test,bn);
printf(("le nombre d'octets est : %d", bn));
}
et j'avais ceci à respecter :
Nom : 36.png
Affichages : 299
Taille : 248,5 KoNom : 35.png
Affichages : 312
Taille : 66,4 Ko