Ändert htonl () die Bytereihenfolge auf der BIG ENDIAN-Maschine?

Buchstäblich verwirrt über htonl (). In so vielen Links fand ich, dass der Code für htonl ist:

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

Wenn auf beiden Computern derselbe Code ausgeführt wird, werden die Bytereihenfolgen ausgetauscht. Beispiel: uint32_ta = 0x1;

Auf Little Endian:

Addr-Wert
100   1
101   0
102   0
103   0

Nach htonl (a)

Addr-Wert
100   0
101   0
102   0
103   1

==========================================Auf Big Endian-Maschine:

Addr-Wert
100   0
101   0
102   0
103   1

Nach htonl (a)

Addr-Wert
100   1
101   0
102   0
103   0

Bedeutet das, dass htonl () die Reihenfolge der Bytes unabhängig von der Maschinenarchitektur ändert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage