O htonl () altera a ordem dos bytes na máquina BIG ENDIAN?
Literalmente confuso sobre htonl (). Em tantos links, descobri que o código para fazer o htonl é:
#define HTONL(n) (((((unsigned long)(n) & 0xFF)) << 24) | \
((((unsigned long)(n) & 0xFF00)) << 8) | \
((((unsigned long)(n) & 0xFF0000)) >> 8) | \
((((unsigned long)(n) & 0xFF000000)) >> 24))
Se o mesmo código for executado nas duas máquinas, ele trocará as ordens de bytes. Exemplo: uint32_t a = 0x1;
Em Little Endian:
Addr value100 1
101 0
102 0
103 0
Após htonl (a)
Addr value100 0
101 0
102 0
103 1
============================================Na máquina Big Endian:
Addr value100 0
101 0
102 0
103 1
Após htonl (a)
Addr value100 1
101 0
102 0
103 0
Isso significa que htonl () mudará a ordem dos bytes, independentemente da arquitetura da máquina?