bonjour a tous !
je voulais savoir quelle etait exactement la difference entre les char et les unsigned char ? je realise un prog de cryptographie avec openssl, et la plupart des fonctions utilisent des unsigned char. j'ai suppose que c'etait parce que ca faisait pile un octet et que donc ca pouvait "caster" n'importe quel contenu, et qu'on aurait aussi bien pu employer des char. jusqu'a ce que j'essaie de faire un printf pour afficher la cle en hexadecimal ( la cle en qustion est en char) en repompant le code sur le site d'open SSL :
et j'obtiens un truc tout chelou, le resultat est bon mais il ya plein de "FFFF" au milieu. donc pour verifier j'ai fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for (i=0;i< longueur;i++) { printf("%02X", cle[i]); }
et la le resultat est bon. et j'avoue que je ne comprends pas du tout pourquoi !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for (i=0;i< longueur;i++) { printf("%02X", (unsigned char )cle[i]); }
et ca me fait un peu peur parce que j'arrete pas de faire des cast dans mon programme notamment pour pouvoir utiliser les fonctions string, genre strcpy ou strlen. normalement, ca ne change que "l'interpretation" de la variable et pas son contenu au sens binaire, du moins c'est ce que j'espere .....
qqn pourrait il m'eclairer sur cette mysterieuse difference, et me dire si c'est une connerie de faire tous ces cast ?
Partager