Réorganiser les éléments d'un tableau
xtimas
-
xtimas Messages postés 13 Statut Membre -
xtimas Messages postés 13 Statut Membre -
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 grace à votre aide:
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:
ç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
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 grace à votre aide:
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:
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
A voir également:
- Réorganiser les éléments d'un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Imprimer un tableau excel - Guide
- Tableau ascii - Guide
- Reorganiser icones iphone - Guide
1 réponse
Salut,
tu peux essayer cela:
@+
Ce n'est pas parce que certaines choses semblent inexplicables, qu'il faut faire semblant de les expliquer!
tu peux essayer cela:
#define uchar unsigned char
#define ulong unsigned long
int main()
{
uchar v=0,n,j;
uchar tab1[16];
ulong tab2[4]= {0x33221100, 0x77665544, 0xbbaa9988, 0xffeeddcc};
for (n = 0; n < 4 ; n++){
for (j=0;j<4;j++){
tab1[v++]=tab2[n]>>(j*8);
}
}
return 0;
}
@+
Ce n'est pas parce que certaines choses semblent inexplicables, qu'il faut faire semblant de les expliquer!
si ton tableau tab1 contient que des valeurs de 0x00 à 0xFF, ben y'a pas de problème...
si tu veux utiliser des int, faut modifier légèrement la boucle....
un truc du style:
ulong mask=0x000000FF;
int val;
int tab1[16];
for (n = 0; n < 4 ; n++){
for (j=0;j<4;j++){
tab1[v++]=(tab2[n]>>(j*8))&mask;
}
}