Конвертировать 4-байтовые символы в int32 в C

Сначала я конвертирую число int32 в массив char [4], затем преобразую массив обратно в int32 с помощью (int *), но число уже не такое, как раньше:

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);

на выходе 127. А если я установлю num = 127, на выходе будет 2130706432. У кого-нибудь есть идеи?

Ответы на вопрос(4)

Ваш ответ на вопрос