int16_t[400] et char[400] xor en C

int16_t[400] et char[400] xor en C - C - Programmation

Marsh Posté le 30-08-2012 à 11:17:00    

Bonjour,  
 
J'ai plusieurs petits problèmes en C :  
 
1/ Comment faire un printf() d'un int16_t ? C'est bête mais %d,%l,%s ne fonctionne pas...
 
2/ Je souhaite faire le XOR bit à bit d'un :
 
int16_t toto[400] avec un char tata[400] seulement quand je fais une boucle :
 

Code :
  1. char tata[400];
  2. int16_t toto[400];
  3. memset(toto, 0x00, sizeof(int16_t) * 400);
  4. memset(tata, 0, 400);
  5. //tata est remplit à cet endroit par 400bits des 0 et des 1.
  6. //toto est remplit à cet endroit en hexadécimal je pense mais je n'en suis pas sur puisque je ne peux pas faire de printf...
  7. char titi[];
  8. for (i=0;i<400;i++){
  9. titi[i] = toto[i] ^ tata[i]
  10. }


 
Cela ne fonctionne pas, normal, mais si vous avez des idées pour convertir tata en int16_t ou toto en char pour que je puisse faire un XOR entre ces deux variables, n'hésitez pas. Merci


Message édité par ceinpap le 30-08-2012 à 11:25:35
Reply

Marsh Posté le 30-08-2012 à 11:17:00   

Reply

Marsh Posté le 30-08-2012 à 11:23:39    

De l'algèbre de bool avec des caractères et des entiers, fallait y penser.

Reply

Marsh Posté le 30-08-2012 à 11:25:09    

je sais bien que cela ne se fait pas, seulement je ne sais pas comment faire autrement...


Message édité par ceinpap le 30-08-2012 à 11:28:51
Reply

Marsh Posté le 30-08-2012 à 11:43:21    

Le xor, il me semble que c'est un opérateur bit à bit.

Reply

Marsh Posté le 30-08-2012 à 13:16:08    

ce que tu veux faire n'est pas clair : tu veux faire un xor entre deux variables de taille probablement différente (8bits pour le char contre 16 pour ton int16_t) comment traites-tu les bits qui n'ont pas de correspondance ?
 
Pire encore, d'après tes commentaires, tata[] serait un tableau de booléens ...
 
Sinon, effectivement, le xor (^) est effectué bit à bit.


---------------
last.fm
Reply

Marsh Posté le 30-08-2012 à 16:51:34    

Désolé, je me suis un peu embrouillé dans mon problème.
 
En fait toto est remplit par un autre char que je vais appelé tutu[400]; et c'est celui la que je devais Xor-é et pas faire tata^toto mais tata^tutu avant que toto soit remplit par tutu.
 
Ensuite, cela ne fonctionnait toujours pas, enfin ça compilait mais les valeurs n'étaient pas bonne car tata[400] contenait 48 et 49 au lieu de 0 et de 1 mais j'ai pu régler ce problème.
 
En tout cas merci à tous car vos commentaires mon fait réfléchir et du coup trouver la solution ! Un grand merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed