package main
import (
"fmt"
)
func xorBytes(a, b []byte) []byte {
result := make([]byte, len(a))
for i := range a {
result[i] = a[i] ^ b[i]
}
return result
}
func printBitsetArray(label string, array []byte) {
fmt.Print(label + ": ")
for _, b := range array {
fmt.Printf("%08b ", b)
}
fmt.Println()
}
func main() {
a := []byte("Aragorn")
b := []byte("Boromir")
c := xorBytes(a, b)
printBitsetArray("a", a)
printBitsetArray("b", b)
printBitsetArray("c", c)
fmt.Print("c: ")
for _, b := range c {
fmt.Printf("%d ", b)
}
fmt.Println()
fmt.Printf("c as string: %q\n", string(c))
}
/*
run:
a: 01000001 01110010 01100001 01100111 01101111 01110010 01101110
b: 01000010 01101111 01110010 01101111 01101101 01101001 01110010
c: 00000011 00011101 00010011 00001000 00000010 00011011 00011100
c: 3 29 19 8 2 27 28
c as string: "\x03\x1d\x13\b\x02\x1b\x1c"
*/