par thedream01 » 15 Avr 2009, 00:22
char G[8][14] = {{1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1}} ;
char lecture[4] ;
while (infile.Read(lecture, 4) != 0)
{
char tabLectBit[32] ;
for (int i = 0 ; i < 4 ; i++)
{
for (int j = 0 ; j < 8 ; j++)
{
tabLectBit[j + i*8] = (lecture[i] >> j) & 1 ;
}
}
char tabCodBit[56] ;
for (int i = 0 ; i < 56 ; i++)
tabCodBit[i] = 0 ;
char *p_tabLect, *p_tabCod ;
for (int i = 0; i < 4 ; i++)
{
p_tabLect = &tabLectBit[i*8] ;
p_tabCod = &tabCodBit[i*14] ;
ProduitCodage(p_tabLect, p_tabCod, G) ;
}
char tabCode[7] ;
for (int i = 0 ; i < 7 ; i++)
tabCode[i] = 0 ;
for (int i = 0 ; i < 7 ; i++)
{
for (int j = 0 ; j < 8 ; j++)
{
tabCode[i] += tabCodBit[i*j] << j ;
}
}
outfile.Write(tabCode, 7) ;
}
return TRUE;
}
void Client::ProduitCodage(char motSrc[8], char motCode[14], char G[8][14])
{
for (int i = 0 ; i < 14 ; i++)
{
for (int j = 0 ; j < 8 ; j++)
{
motCode[7-i] = motCode[7-i] ^ (motSrc[j] & G[7-j][i]) ;
}
}
return ;
}