using System;
class XORBytesDemo
{
// XOR two byte arrays of the same length
static byte[] XorBytes(byte[] a, byte[] b) {
byte[] result = new byte[a.Length];
for (int i = 0; i < a.Length; i++) {
result[i] = (byte)(a[i] ^ b[i]);
}
return result;
}
// Print byte array as 8-bit binary strings
static void PrintBitsetArray(string label, byte[] array) {
Console.Write(label + ": ");
foreach (byte b in array) {
Console.Write(Convert.ToString(b, 2).PadLeft(8, '0') + " ");
}
Console.WriteLine();
}
static void Main()
{
byte[] a = { (byte)'A', (byte)'e', (byte)'r', (byte)'y', (byte)'n' };
byte[] b = { (byte)'A', (byte)'l', (byte)'b', (byte)'u', (byte)'s' };
byte[] c = XorBytes(a, b);
PrintBitsetArray("a", a);
PrintBitsetArray("b", b);
PrintBitsetArray("c", c);
Console.Write("c: ");
foreach (byte ch in c) {
Console.Write((int)ch + " ");
}
}
}
/*
run:
a: 01000001 01100101 01110010 01111001 01101110
b: 01000001 01101100 01100010 01110101 01110011
c: 00000000 00001001 00010000 00001100 00011101
c: 0 9 16 12 29
*/