XOR de 4 char* contenant des bits en C
Bonjour,
Je sais que la question à été posée plein de fois mais je ne vois pas comment faire. Ma question est pour du C uniquement, je précise car dans d'autre langage on trouve pleins de fonctions
J'ai ce bout de code qui normalement fonctionne mais je n'arrive pas à l'adapter à mes besoins :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| //XOR TEST
char tab1[] = "01001110010100110110";
char tab2[] = "10110110011000110011";
// XORed = 11111000001100000101
char tab3[21];
int tailleTab1 = sizeof(tab1) -1;
int tailleTab2 = sizeof(tab2) -1;
int i;
for (i=0; i< tailleTab1; i++){
tab3[i] = tab1[i]^tab2[i];
printf("%d", tab3[i]);
} |
Dans mon cas, je veux faire le Checksum de 4 char* contenant des 0 et des 1. Le premier char* fait 60bits, le deuxième 20 bits, le troisième 16 bits et le dernier 4 bits.
Je ne sais pas trop comment faire, j'ai essayé de mettre ce code dans une fonction (funXor()) avec en paramètre 2 de mes 4 char mais j'ai soit rien en sortie, soit des erreurs de compilation :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| //Xor Function
char *funXor(char *tab1, char *tab2, int tail)
{
char tab3[tail];
int i;
int tailleTab1 = sizeof(tab1) -1;
for (i=0; i< tailleTab1; i++){
tab3[i] = tab1[i]^tab2[i];
//printf("%d", tab3[i]);
}
return tab3;
} |
Code:
1 2 3 4 5
|
char *xor0 = funXor(JK,JN3, 80);
char *xor1 = funXor(xor0,JA3, 96);
char *xor2 = funXor(xor1,JC3, 100);
printf("xor2:%s/", xor2); |
C'est si compliqué de faire le XOR de 4 char* contenant des bits? Je vous remercie de votre aide, je fait rarement du C d'où mon problème assez basique...
Sinon j'ai convertis ces 4 chars* en Hexadécimal pour faire un XOR mais je n'arrive pas non plus à faire quelque chose qui fonctionne...
Si vous avez une idée n'hésitez pas, je suis un peu perdu...