Ä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-Wert100 1
101 0
102 0
103 0
Nach htonl (a)
Addr-Wert100 0
101 0
102 0
103 1
==========================================Auf Big Endian-Maschine:
Addr-Wert100 0
101 0
102 0
103 1
Nach htonl (a)
Addr-Wert100 1
101 0
102 0
103 0
Bedeutet das, dass htonl () die Reihenfolge der Bytes unabhängig von der Maschinenarchitektur ändert?