¿Htonl () cambia el orden de bytes en la máquina BIG ENDIAN?

Literalmente confundido acerca de htonl (). En tantos enlaces encontré que el código para hacer htonl es:

#define HTONL(n) (((((unsigned long)(n) & 0xFF)) << 24) | \
                  ((((unsigned long)(n) & 0xFF00)) << 8) | \
                  ((((unsigned long)(n) & 0xFF0000)) >> 8) | \
                  ((((unsigned long)(n) & 0xFF000000)) >> 24))

Si se ejecuta el mismo código en ambas máquinas, se intercambiarán los pedidos de bytes. Ejemplo: uint32_t a = 0x1;

En Little Endian:

Valor añadido
100   1
101   0
102   0
103   0

Después de htonl (a)

Valor añadido
100   0
101   0
102   0
103   1

============================================En la máquina Big Endian:

Valor añadido
100   0
101   0
102   0
103   1

Después de htonl (a)

Valor añadido
100   1
101   0
102   0
103   0

¿Eso significa que htonl () cambiará el orden de los bytes independientemente de la arquitectura de la máquina?

Respuestas a la pregunta(2)

Su respuesta a la pregunta