How to XOR byte arrays in C

1 Answer

0 votes
#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 

*/

 



answered Jul 12, 2025 by avibootz

Related questions

2 answers 160 views
160 views asked Apr 13, 2023 by avibootz
1 answer 198 views
198 views asked Jun 13, 2015 by avibootz
1 answer 88 views
88 views asked Jul 12, 2025 by avibootz
1 answer 106 views
1 answer 87 views
87 views asked Jul 12, 2025 by avibootz
1 answer 88 views
88 views asked Jul 12, 2025 by avibootz
...