Xor deux cordes en python

Xor deux cordes en python

Pendant la programmation à Python, le «Xor»L'opérateur est utilisé dans plusieurs tâches. Par exemple, pour détecter les erreurs ou les problèmes de transmission de données à l'aide de la somme de contrôle, appliquez le cryptage sur les messages ou récupérez certains bits à partir d'un numéro. Plus précisément, il est utilisé pour comparer deux ensembles de données ou de chaînes et de déterminer s'ils sont similaires ou ont des différences.

Ce blog couvrira les aspects suivants:

  • Qu'est-ce que Xor dans Python?
  • Comment fonctionne XOR à Python?
  • Table de vérité Xor
  • Comment xor deux cordes en python?
  • Scénarios de cas pertinents

Qu'est-ce que Xor dans Python?

Dans Python, "Xor" ou "Exclusif ou«Est un opérateur qui compare deux nombres binaires. Cet opérateur revient "0"Si les deux bits sont les mêmes. Sinon, il sortira "1"Dans le cas où les deux valeurs sont différentes. L'opérateur XOR intégré de Python nous permet de combiner logiquement deux valeurs à l'aide de l'exclusivité ou de l'opération.

Comment fonctionne XOR à Python?

L'opérateur XOR est représenté comme «^«En Python, et il suit la syntaxe donnée:

xor_number = x ^ y

Ici, "x ”et« y"Indiquez les nombres binaires,"^»Représente l'opérateur XOR et«xor_number»Stocke la valeur booléenne résultante.

Table de vérité Xor

Pour en savoir plus sur le fonctionnement de l'opérateur XOR, regardez le tableau donné:

X y x ^ y
0 0 0
0 1 1
1 0 1
1 1 0

Comment xor deux cordes en python?

Comme XOR est un opérateur bitwise, il ne peut fonctionner que sur des entiers. Cependant, pour effectuer l'opération XOR entre deux chaînes, il est nécessaire de les convertir en valeurs ASCII / Unicode respectives en utilisant le «ord ()”Fonction puis appliquez le"^»Opérateur.

Trois scénarios de cas principaux existent lorsque l'on considère l'implication de l'opérateur XOR sur les valeurs de chaîne:

  • Cas 1: les deux chaînes contiennent des valeurs binaires.
  • Cas 2: Les deux chaînes comprennent des caractères.
  • Case: 3: Une chaîne est basée sur des entiers / valeurs binaires, et le second contient des caractères.

Voyons pratiquement les cas énoncés!

Cas 1: Appliquez XOR sur deux chaînes ayant des valeurs binaires

Pour appliquer l'opérateur XOR sur deux chaînes ayant des valeurs binaires, initialisez-les d'abord comme suit:

String1 = "0100100"
String2 = "1001010"

Maintenant, ajoutez les lignes suivantes:

result = [(ord (a) ^ ord (b)) pour a, b dans zip (string1, string2)]
Imprimer (résultat)

Selon le code donné:

  • Invoque le «zipper()”Fonction avec le«pour"Boucle pour créer des paires de personnages"un B", du "String1" et "string2".
  • Chaque paire générée est ensuite transmise au "ord ()”Fonction pour les convertir à leurs valeurs ASCII respectives.
  • "^»Effectue l'opération XOR sur les valeurs ASCII / UNICODE converties et les ajoute dans la liste.
  • Enfin, la valeur résultante est stockée dans le «résultat«Variable et affichée à l'aide du«imprimer()" fonction:

On peut observer que pour chaque même bit d'index des deux chaînes, l'opérateur XOR sortira «0", Et pour différentes valeurs,"1"Est retourné.

Cas 2: Appliquez XOR sur deux chaînes ayant des caractères

Maintenant, l'opérateur XOR est appliqué sur deux chaînes ayant les valeurs de caractère suivantes:

String1 = "deux"
String2 = "Ten"
result = [(ord (a) ^ ord (b)) pour a, b dans zip (string1, string2)]
Imprimer (résultat)

Dans ce cas, le «ord ()»La fonction renvoie la valeur ASCII pour chaque généré et les transmet à« ^ »pour effectuer l'opération XOR:

Une autre façon la plus simple de se souvenir du fonctionnement de cette affaire est lorsque le «ord ()»La fonction renvoie la valeur ASCII pour chaque paire, l'opérateur XOR sort sa valeur soustraite.

Par exemple:

  • Le premier caractère des deux cordes est «t», Dont la valeur ASCII est«116», Donc l'opérateur XOR est revenu 0 (116-116).
  • Le deuxième caractère de la première chaîne est «w"Avec la valeur ASCII"119», Et pour la deuxième chaîne, le«e"Le caractère existe sur le même index ayant une valeur ASCII"101". Par conséquent, l'opérateur XOR sort 18 (119-101).
  • Pour le dernier bit, la première chaîne contient «o"Avec valeur ASCII"111,"Et la deuxième chaîne comprend"n" ayant "110”Valeur ASCII. En conséquence, l'opérateur XOR est retourné 1 (111-110).

Cas 3: Appliquez XOR sur deux quand une chaîne contient des caractères, et l'autre est basé sur des entiers / valeurs binaires

Le dernier cas dans la discussion en cours est lorsqu'une chaîne contient des caractères, tels que «deux», Et l'autre comprend des entiers ou des valeurs binaires, comme«111»:

String1 = "deux"
String2 = "111"
result = [chr (ord (a) ^ ord (b)) pour a, b dans zip (string1, string2)]
imprimer (résultat);

Ici, le code fonctionne de manière similaire au deuxième cas. Sauf que les valeurs ASCII retournées ont été converties en caractères respectifs en utilisant le "chr ()”Fonction Python:

La liste retournée représente les caractères des valeurs ASCII correspondantes.

Conclusion

Dans Python, xor "^" Retour "0"Si les deux bits sont les mêmes. Sinon, il sortira "1". Cependant, les deux chaînes comprennent des caractères, les valeurs sont converties en leur représentation ASCII en utilisant le "ord ()”Fonction, puis l'opérateur XOR est appliqué. La même opération est effectuée lorsque les deux chaînes contiennent différents types de données, comme les caractères et les entiers. Seule la différenciation consiste à invoquer le «chr ()”Fonction pour obtenir la valeur résultante en caractères. Ce blog a démontré comment Xor deux cordes à Python.