Bonjour tous

j'ai débuté en C y'a quelques jours, bref j'ai fais une fonction qui range 4 à 4 les élémnents d'un tableau à 16 octets de la façon suivante:
tab1[16]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};

tab2[4]= {0x33221100, 0x77665544, 0xbbaa9988, 0xffeeddcc};

j'ai fais la fonction suivante:

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
void range(unsigned int *tab1, unsigned int *tab2)
{
	int n;
 
    int m=0;
 
	for (n = 0; n < 16 ; n=n+4)
 
	{
 
     tab2[m]= tab1[n+3]*0x1000000+tab1[n+2]*0x10000+tab1[n+1]*0x100+tab1[n]; 
 
     m++;
 
    }
 
}
maintenant je cherche a faire le travail inversement c'est à dire passer du tab2 vers le tab1, j'ai esayé ce morceau de code pour une seule valeur du tab2:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
unsigned int dr = tab2[0] / 0x1000000;
 unsigned int ds = ((tab2[0] % 0x1000000) / 0x10000) ;
 unsigned int dv = (((tab2[0] % 0x1000000) % 0x10000) / 0x100) ;
 unsigned int dx = (((tab2[0] % 0x1000000) % 0x10000) % 0x100) ;
ça marche mais c'est long et compliqué et puis j'arrive pas à l'intégrer dans une boucle,
avez vous une idée de fonction pour reconstruire tab1 à partir de tab2 ??
merci d'avance