Convierta 4 bytes char a int32 en C

Primero convierto un número int32 en la matriz char [4], luego convierto la matriz a int32 por (int *), pero el número no es el mismo que antes:

unsigned int num = 2130706432;
unsigned int x;
unsigned char a[4];

a[0] = (num>>24) & 0xFF;
a[1] = (num>>16) & 0xFF;
a[2] = (num>>8) & 0xFF;
a[3] = num & 0xFF;

x = *(int *)a;
printf("%d\n", x);

la salida es 127. Y si configuro num = 127, la salida es 2130706432. ¿Alguien tiene ideas?

Respuestas a la pregunta(4)

Su respuesta a la pregunta