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
|
typedef struct
{
char bleu;
char rouge;
char vert
}
pixel;
typedef struct
{
image pixel[12]
}
tabImages;
//pré: c pointe sur un octet et x == 0 ou x == 1
//post: x est inchangé et le bit de poids faible de *c est mis à x, les autres bits de *c sont inchangés.
void lsb(char* c, char x)
{
if(x == 1) *c = *c | x;
else *c = *c & 0xFE;
}
//pré: tabImage contient un tableau de pixel de 12 pixel et i est un entier.
//post: tabImage contient des pixels modifié et int est inchangés
//résultat: les bit de int sont inserer dans le lsb des pixel de tabImage
void modification( struct tabImages, int i)
{
char tabBit[32]; int cpt; int modulo=1;
for(cpt=0;cpt<32;cpt++){
tabBit[cpt] = (i & modulo); //on stock les bits dans un tableau (32 bit == 32 case)
modulo *= 2; //modulo 1..2..4..8..
}
int cptP; //compteur des pointeurs par pixel
cpt=0;
while(cpt<12){
char * couleur = tabImages[cpt].image.rouge;
char * (couleur+1) = tabImages[cpt].image.vert;
char * (couleur+2) = tabImages[cpt].image.bleu;
cpt++;
for(cptP=0;cptP<3;cptP++){
color = *(couleur+cptP);
lsb(color,tabBit[cpt]);
}
} |
Partager