Beispiele für Golang XOR-Operatoren

Wenn die einzelnen Bits zweier Operanden kombiniert werden, führt der bitweise XOR-Operator eine exklusive ODER-Operation aus. Er wird als wahr (1) ausgewertet, wenn genau eines der entsprechenden Bits auf wahr gesetzt ist, während er als falsch (0) ausgewertet wird, wenn beide Bits gleich sind. In Go wird der XOR-Operator hauptsächlich für bitweise Operationen und nicht für logische Vergleiche verwendet. Besonders interessant ist der XOR-Operator (exklusiv ODER), der durch das Zirkumflex-Symbol „^“ dargestellt wird. Dieser Artikel befasst sich mit dem XOR-Operator in Go anhand von Beispielen.

Beispiel 1: Verwenden des Golang XOR-Operators für Integer

Wir verwenden den XOR-Operator für ganzzahlige Werte, um bitweise exklusive ODER-Operationen (XOR) durchzuführen. Jedes Bit in einem neuen Wert, der sich aus der XOR-Methode für die entsprechenden Bits der Operanden ergibt, wenn zwei Operanden verwendet werden, ist das Ergebnis der XOR-Operation.

Paket Haupt
„fmt“ importieren
Funktion main() {
x := 15
y := 25
z := x ^ y
fmt.Printf(„Wert von z ist %d\n“, z)
}

Zu Beginn erstellen wir das primäre Paket, das zum Entwickeln der eigenständigen ausführbaren Programme verwendet wird. Das Go-Paket „fmt“, das Funktionen für formatierte E/A enthält, wird dann mit dem Modifikator „import“ importiert. In diesem Code wird es verwendet, um die Ausgabe auf der Konsole auszugeben. Dann deklarieren wir die Funktion main(), in der die Variablen „x“ und „y“ deklariert und mit den Werten 15 bzw. 25 initialisiert werden.

Die Syntax „:=“ wird hier für die kurze Variablendeklaration in Go verwendet, wobei der der Variablen zugewiesene Wert ihren Typ ableitet. Als Nächstes erstellen wir eine weitere Variable namens „z“, bei der wir das bitweise XOR (exklusives ODER) von „x“ und „y“ berechnet haben. Der Operator „^“ in Go gibt den XOR-Operator an. Schließlich rufen wir die Druckanweisung auf, um den Wert von „z“ auszudrucken, der in die formatierte Zeichenfolge eingefügt wird. „%d“ ist ein Formatbezeichner, der eine Ganzzahl darstellt.

Der Wert nach der Durchführung der XOR-Operation wird in der folgenden Ausgabe erhalten:

Beispiel 2: Verwenden des Golang XOR-Operators für eine Ganzzahl vom Terminal

Wir können den Golang XOR-Operator auch für eine Ganzzahleingabe vom Terminal verwenden. Hier sehen wir das geänderte Programm:

Paket Haupt
„fmt“ importieren

Funktion main() {
var n1 int=0
var n2 int=0
var Ergebnis int=0

fmt.Printf(„Geben Sie die erste Zahl ein: „)
fmt.Scanf(„%d“,&n1)

fmt.Printf(„Geben Sie die zweite Zahl ein: „)
fmt.Scanf(„%d“,&n2)

Ergebnis = n1 ^ n2
fmt.Printf(„Ergebnis: %d“,Ergebnis)
}

Wir definieren zunächst das für dieses Programm erforderliche Paket. Anschließend definieren wir die main()-Funktion für die Programmimplementierung. Dort deklarieren wir drei Integer-Variablen – „n1“, „n2“ und „result“ – und initialisieren sie alle mit dem Wert „0“. Anschließend wird der Benutzer aufgefordert, die erste Zahl mit der Funktion fmt.Printf() einzugeben.

In diesem Fall wird die Variable „n1“ mit einer Ganzzahl gefüllt, die vom Benutzer über die Funktion fmt.Scanf() gelesen wird. Ähnlich wie die erste Zahl wird auch die zweite Zahl vom Benutzer angefordert und ihr Ergebnis in der Variable „n2“ gespeichert. Der Operator „^“ wird verwendet, um die bitweise XOR-Operation für „n1“ und „n2“ durchzuführen, und das Ergebnis wird der Variable „result“ zugewiesen.

Da wir die Eingaben in der folgenden Konsole vorgenommen haben, zeigt das Programm das Ergebnis der XOR-Operation auf der Konsole an:

Beispiel 3: Verwenden des logischen XOR-Operators von Golang für Boolesche Werte

Wir haben in den vorherigen Beispielen den bitweisen XOR-Operator besprochen. Hier verwenden wir einen logischen XOR-Operator zwischen zwei Booleschen Werten.

Paket Haupt

importieren (
„fmt“
)

Funktion main() {
A := wahr
B := falsch

fmt.println((A || B) && !(A && B))
}

Die Booleschen Variablen „A“ und „B“ sollten zunächst die Einträge „true“ bzw. „false“ erhalten. Dann verwenden wir die Operatoren logisches ODER (||), logisches UND (&&) und logisches NICHT (!), um einen Booleschen Ausdruck auszuführen: (A || B) && !(A && B). Der Ausdruck wird als „true“ ausgewertet, wenn entweder A oder B wahr ist, aber nicht beide. Andernfalls wird er als „false“ ausgewertet.

Die Ausgabe des XOR-Operators wird als Boolescher Wert abgerufen:

Beispiel 4: Verwenden des Golang XOR-Operators zur Verschlüsselung von Zeichenfolgen

Zusätzlich können wir den XOR-Operator für die einfache Ver- und Entschlüsselung von Zeichenfolgen in Go basierend auf dem bereitgestellten Schlüssel verwenden. Hier ist die Demonstration des Codes, in dem der XOR-Operator zum Ver- und Entschlüsseln der Zeichenfolge verwendet wird.

Paket Haupt

importieren (
„fmt“
)

func xorEncryptDecrypt(MyData-Zeichenfolge, Schlüsselbyte) Zeichenfolge {
verschlüsselt := make([]Byte, Länge (MeineDaten))
für i := 0; i < len(MeineDaten); i++ {
verschlüsselt[i] = MeineDaten[i] ^ Taste
}
Rückgabestring (verschlüsselt)
}

Funktion main() {
MyData := „Willkommen, Golang-Tutorials“
Schlüssel := Byte(30)

encryptedVal := xorEncryptDecrypt(MeineDaten, Schlüssel)
fmt.Println(„Verschlüsselter Wert:“, encryptedVal)

entschlüsselterWert := xorEncryptDecrypt(verschlüsselterWert, Schlüssel)
fmt.Println(„Entschlüsselter Wert:“, decryptedVal)
}

Wir erstellen die Funktion xorEncryptDecrypt(), die die Parameter „MyData“ vom Typ String und „key“ vom Typ Byte annimmt. Die Funktion erstellt einen „verschlüsselten“ Byte-Ausschnitt mit der gleichen Länge wie „MyData“, um das verschlüsselte Ergebnis zu speichern. Dann verwenden wir die „for“-Schleife, die über jedes Zeichen in „MyData“ iteriert. Innerhalb der Schleife führt sie die XOR-Operation (^) zwischen dem Byte-Wert des aktuellen Zeichens in „MyData“ und dem Schlüsselbyte aus.

Der zugehörige Index des verschlüsselten Slices enthält das Ergebnis. Nachdem alle Zeichen verschlüsselt wurden, wird das verschlüsselte Slice mit string(encrypted) wieder in einen String umgewandelt und zurückgegeben. Als Nächstes haben wir die main()-Funktion, in der wir einen „MyData“-String und ein „key“-Schlüsselbyte definieren. Die xorEncryptDecrypt()-Funktion wird mit „MyData“ und „key“ aufgerufen, um den String zu verschlüsseln, und das verschlüsselte Ergebnis wird in der Variable „encryptedVal“ gespeichert. Die xorEncryptDecrypt()-Funktion wird erneut mit „encryptedVal“ und „key“ aufgerufen, um den verschlüsselten String zu entschlüsseln. Das entschlüsselte Ergebnis wird in der Variable „decryptedVal“ gespeichert.

Die Ausgabe zeigt die verschlüsselten und entschlüsselten Werte der Zeichenfolge „MyData“ unter Verwendung des XOR-Verschlüsselungsalgorithmus mit dem angegebenen Schlüssel:

Beispiel 5: Verwenden des Golang XOR-Operators für Hexa-Byte-Werte

Darüber hinaus kann der XOR-Operator auch verwendet werden, um die hexadezimalen Bytewerte auf Bitebene zu manipulieren und zu kombinieren. Das folgende Beispiel zeigt die Verwendung des XOR-Operators von Go auf hexadezimale Bytedaten:

Paket Haupt

„fmt“ importieren

Funktion main() {

var hexaByte byte = 0x0F

fmt.Printf(„%08b\n“, hexaByte)
fmt.Printf(„%08b\n“, ^hexaByte)
}

Wir definieren das „hexaByte“ als den hexadezimalen Bytewert von „0x0F“ und das „xorVal“ als den hexadezimalen Bytewert von „0x2C“. Anschließend führen wir die bitweise XOR-Operation zwischen „hexaByte“ und „xorVal“ mit dem Operator „^“ aus und speichern das Ergebnis in der Variable „res“. Abschließend drucken wir die binäre Darstellung des Ergebnisses mit dem Formatbezeichner „%08b“ in der Funktion fmt.Printf(). Der Teil „08“ stellt sicher, dass die Ausgabe bei Bedarf als 8 Zeichen mit führenden Nullen formatiert wird.

Die Ausgabe zeigt das Ergebnis der bitweisen XOR-Operation, das der folgenden Binärdarstellung entspricht:

Abschluss

Wir können die Bits manipulieren, die Daten verschlüsseln, Fehler erkennen und mehr in Go, indem wir den XOR-Operator nutzen. Wir haben verschiedene Beispiele für die Verwendung des XOR-Operators in Go bereitgestellt, die leicht verständlich sind. Der XOR-Operator in Go ist ein wirksames Werkzeug, um die bitweisen Operationen schnell abzuschließen und eine Vielzahl von Programmierproblemen zu bewältigen.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen