Xor duas cordas em python

Xor duas cordas em python

Enquanto programa em Python, o “Xor”O operador é utilizado em várias tarefas. Por exemplo, para detectar erros ou problemas na transmissão de dados com a ajuda da soma de verificação, aplique criptografia nas mensagens ou recupere determinados bits de um número. Mais especificamente, ele é usado para comparar dois conjuntos de dados ou strings e determinar se são semelhantes ou têm algumas diferenças.

Este blog cobrirá os seguintes aspectos:

  • O que é XOR em Python?
  • Como o XOR funciona no Python?
  • Xor Tabela de verdade
  • Como Xor duas cordas em Python?
  • Cenários de caso relevantes

O que é XOR em Python?

Em Python, “Xor" ou "Exclusivo ou”É um operador que compara dois números binários bit netwise. Este operador retorna “0”Se ambos os bits forem iguais. Caso contrário, produz “1”Caso ambos os valores sejam diferentes. O operador XOR embutido do Python nos permite combinar logicamente dois valores com a ajuda do exclusivo ou operação.

Como o XOR funciona no Python?

O operador XOR é representado como “^”Em Python, e segue a sintaxe dada:

xor_number = x ^ y

Aqui, "x ”e“ y”Indique os números binários,“^”Representa o operador XOR e“xor_number”Armazena o valor booleano resultante.

Xor Tabela de verdade

Para saber mais sobre o funcionamento do operador XOR, consulte a tabela especificada:

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

Como Xor duas cordas em Python?

Como o XOR é um operador um bit, ele só pode operar em inteiros. No entanto, para executar a operação XOR entre duas cordas, é necessário convertê -las em seus respectivos valores ASCII/Unicode usando os “ord ()”Função e depois aplique o“^Operador.

Existem três cenários principais de caso ao considerar a implicação do operador XOR nos valores da string:

  • Caso 1: Ambas as cordas contêm valores binários.
  • Caso 2: Ambas as cordas compreendem caracteres.
  • Caso: 3: Uma string é baseada em inteiros/valores binários, e o segundo contém caracteres.

Vamos praticamente demonstrar os casos declarados!

Caso 1: aplique XOR em duas cordas com valores binários

Para aplicar o operador XOR em duas cordas com valores binários, inicialmente inicialize -os da seguinte maneira:

String1 = "0100100"
String2 = "1001010"

Agora, adicione as seguintes linhas:

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

De acordo com o código fornecido:

  • Invoque o “fecho eclair()”Função com o“para”Loop para criar pares de personagens“A ”,“ B", de "String1" e "String2”.
  • Cada par gerado é então passado para o “ord ()”Função para convertê -los em seus respectivos valores ASCII.
  • ““^”Executa a operação XOR nos valores ASCII/Unicode convertidos e os anexa à lista.
  • Por fim, o valor resultante é armazenado no “resultado”Variável e exibido usando o“imprimir()”Função:

Pode -se observar que, para cada mesmo bit de índice de ambas as strings, a saída do operador XOR “0”, E para valores diferentes,“1”É devolvido.

Caso 2: aplique XOR em duas cordas com caracteres

Agora, o operador XOR é aplicado em duas cordas com os seguintes valores de caracteres:

string1 = "dois"
String2 = "Ten"
resultado = [(ord (a) ^ ord (b)) para a, b em zip (string1, string2)]
Imprimir (resultado)

Nesse caso, o “ord ()”A função retorna o valor ASCII para cada um gerado e os passa para“^”para executar a operação XOR:

Outra maneira mais simples de lembrar o funcionamento deste caso é quando “ord ()”A função retorna o valor ASCII para cada par, o operador XOR produz seu valor subtraído.

Por exemplo:

  • O primeiro personagem de ambas as cordas é “t”, Cujo valor ASCII é“116”, Então o operador XOR retornou 0 (116-116).
  • O segundo personagem da primeira string é “c"Com o valor ASCII"119”, E para a segunda sequência, o“e”O personagem existe no mesmo índice com valor ASCII“101”. Portanto, o operador XOR sai 18 (119-101).
  • Para o último bit, a primeira string contém “o"Com o valor ASCII"111,”E a segunda sequência compreende“n" tendo "110”Valor ASCII. Como resultado, o operador XOR retornou 1 (111-110).

Caso 3: aplique xor em dois quando uma string contiver caracteres, e outros são baseados em inteiros/valores binários

O último caso na discussão em andamento é quando uma string contém caracteres, como “dois”, E o outro compreende números inteiros ou valores binários, como“111”:

string1 = "dois"
string2 = "111"
resultado = [chr (ord (a) ^ ord (b)) para a, b em zip (string1, string2)]
impressão (resultado);

Aqui, o código funciona de maneira semelhante ao segundo caso. Exceto que os valores ASCII retornados foram convertidos para os respectivos caracteres usando o “Chr ()”Função Python:

A lista retornada representa os caracteres dos valores ASCII correspondentes.

Conclusão

Em Python, xor “^”Retorna“0”Se ambos os bits forem iguais. Caso contrário, produz “1”. No entanto, ambas as cordas compreendem caracteres, os valores são convertidos em sua representação ASCII usando o “ord ()”Função, e então o operador XOR é aplicado. A mesma operação é realizada quando ambas as cordas contêm diferentes tipos de dados, como caracteres e números inteiros. Somente a diferenciação é invocar o “Chr ()”Função para obter o valor resultante nos caracteres. Este blog demonstrou como XOR duas cordas em Python.