Xor dos cuerdas en Python

Xor dos cuerdas en Python

Mientras se programaba en Python, el "Xor"El operador se utiliza en varias tareas. Por ejemplo, para detectar errores o problemas en la transmisión de datos con la ayuda de la suma de verificación, aplicar el cifrado en los mensajes o recuperar ciertos bits de un número. Más específicamente, se utiliza para comparar dos conjuntos de datos o cadenas y determinar si son similares o tienen algunas diferencias.

Este blog cubrirá los siguientes aspectos:

  • ¿Qué es Xor en Python??
  • ¿Cómo funciona Xor en Python??
  • Table de la verdad Xor
  • Cómo xor dos cuerdas en python?
  • Escenarios de casos relevantes

¿Qué es Xor en Python??

En Python, "Xor" o "Exclusivo o"Es un operador que compara dos números binarios bit a bit a. Este operador devuelve "0"Si ambos bits son iguales. Más, sale "1"En caso de que ambos valores sean diferentes. El operador XOR incorporado de Python nos permite combinar lógicamente dos valores con la ayuda de la operación exclusiva o exclusiva.

¿Cómo funciona Xor en Python??

El operador XOR se representa como "^"En Python, y sigue la sintaxis dada:

xor_number = x ^ y

Aquí, "X y Y"Indique los números binarios", "^"Representa al operador XOR, y"xor_number"Almacena el valor booleano resultante.

Table de la verdad Xor

Para saber más sobre el funcionamiento del operador XOR, mire la tabla dada:

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

Cómo xor dos cuerdas en python?

Como Xor es un operador bitwise, solo puede funcionar en enteros. Sin embargo, para realizar la operación XOR entre dos cadenas, se requiere convertirlas en sus respectivos valores ASCII/Unicode utilizando el "Ord ()"Función y luego aplique el"^"Operador.

Existen tres escenarios de casos principales al considerar la implicación del operador XOR en los valores de cadena:

  • Caso 1: Ambas cadenas contienen valores binarios.
  • Caso 2: Ambas cuerdas comprenden caracteres.
  • Caso: 3: Una cadena se basa en enteros/valores binarios, y el segundo contiene caracteres.

Prácticamente demostremos los casos declarados!

Caso 1: Aplicar XOR en dos cadenas con valores binarios

Para aplicar el operador XOR en dos cadenas que tienen valores binarios, primero inicializarlos de la siguiente manera:

string1 = "0100100"
string2 = "1001010"

Ahora, agregue las siguientes líneas:

resultado = [(ord (a) ^ ord (b)) para a, b en zip (string1, string2)]
Imprimir (resultado)

Según el código dado:

  • Invoca el "cremallera()"Función con el"para"Loop para crear pares de personajes"A "," B", desde el "String1" y "string2".
  • Cada par generado se pasa a la "Ord ()"Funciona para convertirlos en sus respectivos valores ASCII.
  • "^"Realiza la operación XOR en los valores ASCII/Unicode convertidos y los agrega a la lista.
  • Por último, el valor resultante se almacena en el "resultado"Variable y mostrada utilizando el"imprimir()" función:

Se puede observar que para cada mismo bit de índice de ambas cadenas, las salidas del operador XOR "0", Y para diferentes valores,"1" es regresado.

Caso 2: Aplicar Xor en dos cuerdas con caracteres

Ahora, el operador XOR se aplica en dos cadenas que tienen los siguientes valores de caracteres:

string1 = "dos"
string2 = "diez"
resultado = [(ord (a) ^ ord (b)) para a, b en zip (string1, string2)]
Imprimir (resultado)

En este caso, el "Ord ()"La función devuelve el valor ASCII para cada generado y pasarlos a"^"para realizar la operación XOR:

Otra forma más sencilla de recordar el funcionamiento de este caso es cuando el "Ord ()La función devuelve el valor ASCII para cada par, el operador XOR emite su valor restado.

Por ejemplo:

  • El primer personaje de ambas cuerdas es "T", Cuyo valor ASCII es"116", Entonces el operador XOR devolvió 0 (116-116).
  • El segundo personaje de la primera cadena es "w"Con el valor ASCII"119", Y para la segunda cadena, la"mi"El personaje existe en el mismo índice que tiene valor ASCII"101". Por lo tanto, el operador XOR sale 18 (119-101).
  • Para el último bit, la primera cadena contiene "O"Con valor ASCII"111,"Y la segunda cadena comprende"norte" teniendo "110"Valor ASCII. Como resultado, el operador XOR devolvió 1 (111-110).

Caso 3: Aplicar XOR en dos cuando una cadena contiene caracteres, y otro se basa en enteros/valores binarios

El último caso en la discusión en curso es cuando una cadena contiene caracteres, como "dos", Y el otro comprende enteros o valores binarios, como"111":

string1 = "dos"
string2 = "111"
resultado = [chr (ord (a) ^ ord (b)) para a, b en zip (string1, string2)]
imprimir (resultado);

Aquí, el código funciona de manera similar al segundo caso. Excepto que los valores ASCII devueltos se han convertido a los caracteres respectivos utilizando el "chr ()"Función Python:

La lista devuelta representa los caracteres de los valores ASCII correspondientes.

Conclusión

En Python, Xor "^" devoluciones "0"Si ambos bits son iguales. Más, sale "1". Sin embargo, ambas cadenas comprenden caracteres, los valores se convierten en su representación ASCII utilizando el "Ord ()"Función, y luego se aplica el operador XOR. La misma operación se realiza cuando ambas cuerdas contienen diferentes tipos de datos, como caracteres e enteros. Solo la diferenciación es invocar el "chr ()"Funciona para obtener el valor resultante en los caracteres. Este blog demostró cómo xor dos cuerdas en Python.