Я запустил следующую программу на машине с маленьким -порядком байтов [LE] [Linux, процессор Intel]. Я не могу объяснить 3 вывода в приведенном ниже фрагменте кода. Поскольку машина LE, значение a
сохраняется как 0x78563412
. При печати отображается его фактическое значение. Поскольку это машина LE, я ожидаю, что ntohl()
не будет -операции и отображения 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