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ść Addr100 1
101 0
102 0
103 0
Po htonl (a)
Wartość Addr100 0
101 0
102 0
103 1
============================================Na maszynie Big Endian:
Wartość Addr100 0
101 0
102 0
103 1
Po htonl (a)
Wartość Addr100 1
101 0
102 0
103 0
Czy to oznacza, że htonl () zmieni kolejność bajtów niezależnie od architektury maszyny?