CZY Htonl () zmienia kolejność bajtów na maszynie BIG ENDIAN?

Dosłownie zdezorientowany o htonl (). W tak wielu linkach odkryłem, że kod do htonl to:

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

Jeśli ten sam kod jest uruchamiany na obu komputerach, zamieni kolejność bajtów. Przykład: uint32_t a = 0x1;

Na Little Endian:

Wartość Addr
100   1
101   0
102   0
103   0

Po htonl (a)

Wartość Addr
100   0
101   0
102   0
103   1

============================================Na maszynie Big Endian:

Wartość Addr
100   0
101   0
102   0
103   1

Po htonl (a)

Wartość Addr
100   1
101   0
102   0
103   0

Czy to oznacza, że ​​htonl () zmieni kolejność bajtów niezależnie od architektury maszyny?

questionAnswers(2)

yourAnswerToTheQuestion