little endian -> big endian

#include <stdio.h>
void change(int * n) //general way
{
char *p = (char *)n;
char t;
t = p[0], p[0] = p[3], p[3] = t;
t = p[1], p[1] = p[2], p[2] = t;
}
void change(int *n)
{
printf("%d\n", (*n << 24));
// 0100 0000 0000 0000 0000 0000 0000 0000 (0x04000000)
printf("%d\n", ((*n << 8) & 0xff0000));
// 0000 0010 0000 0011 0000 0100 0000 0000 (0x02030400)
// & 0000 0000 1111 1111 0000 0000 0000 0000 (0x00ff0000)
// 0000 0000 0000 0011 0000 0000 0000 0000 (0x00030000)
printf("%d\n", ((*n >> 8) & 0xff00) );
// 0000 0000 0000 0001 0000 0010 0000 0011 (0x00010203)
// & 0000 0000 0000 0000 1111 1111 0000 0000 (0x0000ff00)
// 0000 0000 0000 0000 0000 0010 0000 0000 (0x00000200)
printf("%d\n", (*n >> 24));
// 0000 0000 0000 0000 0000 0000 0000 0001 (0x00000001)
*n = (*n << 24) | ((*n << 8) & 0x00ff0000) | ((*n >> 8) & 0x0000ff00) | (*n >> 24);
}
main()
{
int xData = 0x01020304;
char *ptr = (char*)&xData;
printf("x = %d%d%d%d\n", ptr[0], ptr[1], ptr[2], ptr[3]);
change1(&xData);
printf("x = %d%d%d%d\n", ptr[0], ptr[1], ptr[2], ptr[3]);
}