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 value
100   1
101   0
102   0
103   0

Após htonl (a)

Addr value
100   0
101   0
102   0
103   1

============================================Na máquina Big Endian:

Addr value
100   0
101   0
102   0
103   1

Após htonl (a)

Addr value
100   1
101   0
102   0
103   0

Isso significa que htonl () mudará a ordem dos bytes, independentemente da arquitetura da máquina?

questionAnswers(2)

yourAnswerToTheQuestion