Que le LSB d'un octet devienne le LSB d'un autre octet.

Projet de crypteur top secret.

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Coucou les zestueux !

J'essaie en ce moment de coder un programme destiné à cacher un message dans une image. Ce programme, change la valeur du LSB du code rouge de chaque pixel de l'image (donc pour cacher une lettre, j'ai besoin de 8 pixels). J'ai cependant un problème : Je ne sais pas comment récupérer la valeur d'un bit, pour le placer dans le LSB d'un octet.

J'ai d'abord pensé à décaler mes bits (ceux de l'octet qui composent mon caractère) d'un rang vers la droite, pour avoir le bit qui m'intéresse à la place du LSB, faire un ET avec un 0b00000001, puis faire un ET avec la valeur de rouge du pixel. Sauf, qu'avec cette méthode, si le LSB du rouge est à 0 (alors que je veux y mettre un 1), on aura forcément un 0 !

Je ne peux pas non plus faire un OU, car si ce LSB est à 1 (alors que je veux y mettre un 0), j'aurais forcément un 1 !

Du coup, dois-je tester la valeur que j'obtiens, lorsque je fait mon premier ET (j'ai l'octet de mon caractère, j'applique un ET dessus avec un 0b00000001) pour savoir si elle vaut 0 ou 1, et agir en conséquence, où il y a une meilleure méthode ?

J'ai vu qu'il y a une classe Byte, qui permet de faire un certain nombre de chose sur les octets, mais je ne suis pas sûr de la manière dont je devrais m'en servir (faut-il que je m'en serve pour qu'elle me ressorte mon octet dans une string de 8 caractères, et que je les récupères individuellement ?)…

Édité par Popiette

C'est Sakamoto qui m'a dit de le faire !

+1 -0

Cette réponse a aidé l'auteur du sujet

On peut faire fonctionner le tout avec un OU, en mettant le LSB de la valeur de rouge à zéro. Pour mettre le LSB à zéro, il suffit de faire un ET avec une constante qui ne contient que des 1, sauf pour le LSB de celle-ci.

+2 -0
Auteur du sujet

On peut faire fonctionner le tout avec un OU, en mettant le LSB de la valeur de rouge à zéro. Pour mettre le LSB à zéro, il suffit de faire un ET avec une constante qui ne contient que des 1, sauf pour le LSB de celle-ci.

Mewtow

Oh punaise oui ! Mais pourquoi n'y ai-je pas pensé ?

Merci, ô grand Mewtow, détenteur de la connaissance !

C'est Sakamoto qui m'a dit de le faire !

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte