#include <stdio.h>
template <typename T>
T swap_endian(T u)
{
static_assert (CHAR_BIT == 8, "CHAR_BIT != 8");
union
{
T u;
unsigned char u8[sizeof(T)];
} source, dest;
source.u = u;
for (T k = 0; k < sizeof(T); k++)
dest.u8[k] = source.u8[sizeof(T) - k - 1];
return dest.u;
}
int main(){
int le = 0x00FF3200, be;
be=swap_endian<int>(le);
printf("LE: 0x%08x\nBE: 0x%08x\n", le, be);
return 0;
}
Comments