Я запустил следующую программу на машине little-endian [LE] [Linux, процессор Intel]. Я не могу объяснить три вывода в ниже фрагменте кода. Так как машина LE, значение a
сохраняется как 0x78563412
. При печати отображается фактическое значение. Начиная с его машины LE, я ожидаю, что ntohl()
будет no-op и отобразит 0x78563412
, что он делает. Тем не менее, я ожидаю, что 0x12345678
для второго оператора печати, содержащего htonl()
. Может кто-то, пожалуйста, помогите мне понять, почему они такие же?
int main()
{
int a = 0x12345678;
printf("Original - 0x%x\n", (a));
printf("Network - 0x%x\n", htonl(a));
printf("Host - 0x%x\n", ntohl(a));
return 0;
}
Вывод:
Original - 0x12345678
Network - 0x78563412
Host - 0x78563412