Xor due stringhe in Python

Xor due stringhe in Python

Mentre programmine in Python, il “Xor"L'operatore è utilizzato in diverse attività. Ad esempio, per rilevare errori o problemi nella trasmissione dei dati con l'aiuto di checksum, applicare la crittografia sui messaggi o recuperare determinati bit da un numero. Più specificamente, viene utilizzato per confrontare due serie di dati o stringhe e determinare se sono simili o hanno alcune differenze.

Questo blog coprirà i seguenti aspetti:

  • Cos'è Xor in Python?
  • Come funziona Xor in Python?
  • Xor Truth Table
  • Come xor due stringhe in Python?
  • Scenari di casi pertinenti

Cos'è Xor in Python?

In Python, "Xor" O "Esclusivo o"È un operatore che confronta due numeri binari bit. Questo operatore restituisce "0"Se entrambi i bit sono gli stessi. Altrimenti, produce "1"Nel caso in cui entrambi i valori siano diversi. L'operatore XOR integrato di Python ci consente di combinare logicamente due valori con l'aiuto dell'esclusiva o dell'operazione.

Come funziona Xor in Python?

L'operatore XOR è rappresentato come "^"In Python, e segue la sintassi data:

xor_number = x ^ y

Qui, "x "e" y"Indicare i numeri binari,"^"Rappresenta l'operatore XOR e"xor_number"Memorizza il valore booleano risultante.

Xor Truth Table

Per saperne di più sul funzionamento dell'operatore XOR, guarda la tabella data:

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

Come xor due stringhe in Python?

Poiché Xor è un operatore bitwise, può funzionare solo su numeri interi. Tuttavia, per eseguire l'operazione XOR tra due stringhe, è necessario convertirle nei rispettivi valori ASCII/Unicode usando "ord ()"Funzione e quindi applicare il"^"Operatore.

Esistono tre scenari principali di caso quando si considerano l'implicazione dell'operatore XOR sui valori delle stringhe:

  • Caso 1: entrambe le stringhe contengono valori binari.
  • Caso 2: entrambe le stringhe comprendono i caratteri.
  • Caso: 3: una stringa si basa su numeri interi/valori binari e la seconda contiene caratteri.

Dimostriamo praticamente i casi dichiarati!

Caso 1: applicare XOR su due stringhe con valori binari

Per applicare l'operatore XOR su due stringhe con valori binari, inizializzarli in primo luogo come segue:

String1 = "0100100"
String2 = "1001010"

Ora, aggiungi le seguenti righe:

risultato = [(ord (a) ^ ord (b)) per a, b in zip (string1, string2)]
Stampa (risultato)

Secondo il codice dato:

  • Invocare il "cerniera lampo()Funzione "con il"per"Loop per creare coppie di personaggi"a "," b", dal "String1" E "String2".
  • Ogni coppia generata viene quindi passata al "ord ()"Funzione per convertirli nei rispettivi valori ASCII.
  • "^"Esegue l'operazione XOR sui valori ASCII/Unicode convertiti e li aggiunge all'elenco.
  • Infine, il valore risultante viene archiviato in "risultato"Variabile e visualizzata usando"stampa()" funzione:

Si può osservare che per ogni stesso bit indice di entrambe le stringhe, l'operatore XOR emette "0", E per valori diversi,"1"Viene restituito.

Caso 2: applicare XOR su due stringhe con caratteri

Ora, l'operatore XOR viene applicato su due stringhe con i seguenti valori dei caratteri:

string1 = "due"
string2 = "dieci"
risultato = [(ord (a) ^ ord (b)) per a, b in zip (string1, string2)]
Stampa (risultato)

In questo caso, il "ord ()"La funzione restituisce il valore ASCII per ciascun generato e li passa a"^"per eseguire l'operazione XOR:

Un altro modo più semplice per ricordare il funzionamento di questo caso è quando il "ord ()"La funzione restituisce il valore ASCII per ciascuna coppia, l'operatore XOR emette il valore sottratto.

Per esempio:

  • Il primo carattere di entrambe le stringhe è "T", Il cui valore ASCII è"116", Così l'operatore XOR ha restituito 0 (116-116).
  • Il secondo carattere della prima stringa è "w"Con il valore ASCII"119", E per la seconda stringa,"e"Il carattere esiste sullo stesso indice con valore ASCII"101". Pertanto, l'operatore XOR emette 18 (119-101).
  • Per l'ultimo bit, la prima stringa contiene "o"Con valore ASCII"111,"E la seconda stringa comprende"N" avendo "110"Valore ASCII. Di conseguenza, l'operatore XOR ha restituito 1 (111-110).

Caso 3: applicare xor su due quando una stringa contiene caratteri e l'altra si basa su numeri interi/valori binari

L'ultimo caso nella discussione in corso è quando una stringa contiene caratteri, come "due", E l'altro comprende numeri interi o valori binari, come"111":

string1 = "due"
String2 = "111"
risultato = [Chr (ord (a) ^ ord (b)) per a, b in zip (string1, string2)]
stampa (risultato);

Qui, il codice funziona in modo simile al secondo caso. Tranne il fatto che i valori ASCII restituiti sono stati convertiti nei rispettivi caratteri usando il "CHR ()"Funzione Python:

L'elenco restituito rappresenta i caratteri dei valori ASCII corrispondenti.

Conclusione

In Python, Xor "^" ritorna "0"Se entrambi i bit sono gli stessi. Altrimenti, produce "1". Tuttavia, entrambe le stringhe comprendono caratteri, i valori vengono convertiti nella loro rappresentazione ASCII usando "ord ()"Funzione, quindi viene applicato l'operatore XOR. La stessa operazione viene eseguita quando entrambe le stringhe contengono diversi tipi di dati, come caratteri e numeri interi. Solo la differenziazione è invocare il "CHR ()"Funzione per ottenere il valore risultante nei caratteri. Questo blog ha dimostrato come Xor due stringhe in Python.