fun xorBytes(a: ByteArray, b: ByteArray): ByteArray {
return ByteArray(a.size) { i -> (a[i].toInt() xor b[i].toInt()).toByte() }
}
fun printBitsetArray(label: String, array: ByteArray) {
print("$label: ")
array.forEach { byte ->
print(byte.toUByte().toString(2).padStart(8, '0') + " ")
}
println()
}
fun main() {
val a = "Aragorn".toByteArray(Charsets.US_ASCII)
val b = "Boromir".toByteArray(Charsets.US_ASCII)
val c = xorBytes(a, b)
printBitsetArray("a", a)
printBitsetArray("b", b)
printBitsetArray("c", c)
print("c: ")
c.forEach { byte ->
print("${byte.toUByte()} ")
}
println()
}
/*
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
*/