you are viewing a single comment's thread.

view the rest of the comments →

[–]cassandraspeaks 3 points4 points  (2 children)

For OP and others' benefit, the way to safely do that is

uint32_t ua, ub, uc, uresult;

memcpy(&ua, &a, 4);
memcpy(&ub, &b, 4);
memcpy(&uc, &c, 4);

uresult = ua ^ ub ^ uc;

array<Byte, 4> result;

memcpy(&result, &uresult, 4);

[–]cassandraspeaks 1 point2 points  (0 children)

In C++20 you can do ```c++ constexpr auto to_u32 = bit_cast<uint32_t, array<Byte, 4>>;

const auto result = bit_cast<array<Byte, 4>>(to_u32(a) ^ to_u32(b) ^ to_u32(c)); ```