¿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ñadido100 1
101 0
102 0
103 0
Después de htonl (a)
Valor añadido100 0
101 0
102 0
103 1
============================================En la máquina Big Endian:
Valor añadido100 0
101 0
102 0
103 1
Después de htonl (a)
Valor añadido100 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?