Mesma saída para htonl () e ntohl () em um inteiro
Eu corri o seguinte programa na máquina [LE] little-endian [Linux, processador Intel]. Não consigo explicar as três saídas no snippet de código abaixo. Como a máquina é LE, o valor dea
é armazenado como0x78563412
. Ao imprimir, está exibindo seu valor real. Como é uma máquina LE, esperontohl()
para ser um não-op e exibir0x78563412
, o que está fazendo. No entanto, espero0x12345678
para a segunda declaração de impressão contendohtonl()
. Alguém por favor pode me ajudar a entender por que eles são iguais?
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;
}
Saída:
Original - 0x12345678
Network - 0x78563412
Host - 0x78563412