#include <stdio.h>
#include <stdint.h>
#include <string.h>
// XOR two byte arrays of the same length
void xor_bytes(const uint8_t *a, const uint8_t *b, uint8_t *result, size_t len) {
for (size_t i = 0; i < len; ++i) {
result[i] = a[i] ^ b[i];
}
}
// Print byte array as 8-bit binary values
void print_bitset_array(const char *label, const uint8_t *array, size_t len) {
printf("%s: ", label);
for (size_t i = 0; i < len; ++i) {
for (int bit = 7; bit >= 0; --bit)
printf("%d", (array[i] >> bit) & 1);
printf(" ");
}
printf("\n");
}
int main() {
uint8_t a[] = {'A', 'e', 'r', 'y', 'n'};
uint8_t b[] = {'A', 'l', 'b', 'u', 's'};
size_t len = sizeof(a);
uint8_t c[len];
xor_bytes(a, b, c, len);
print_bitset_array("a", a, len);
print_bitset_array("b", b, len);
print_bitset_array("c", c, len);
printf("c: ");
for (size_t i = 0; i < len; ++i)
printf("%d ", c[i]);
return 0;
}
/*
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
*/