Htonl () меняет порядок байтов на машине BIG ENDIAN?
Буквально запутался насчет htonl (). Во многих ссылках я обнаружил, что код для htonl:
#define HTONL(n) (((((unsigned long)(n) & 0xFF)) << 24) | \
((((unsigned long)(n) & 0xFF00)) << 8) | \
((((unsigned long)(n) & 0xFF0000)) >> 8) | \
((((unsigned long)(n) & 0xFF000000)) >> 24))
Если один и тот же код запускается на обеих машинах, он меняет порядок байтов. Пример: uint32_t a = 0x1;
На Little Endian:
Значение Addr100 1
101 0
102 0
103 0
После хтонл (а)
Значение Addr100 0
101 0
102 0
103 1
============================================На Big Endian машине:
Значение Addr100 0
101 0
102 0
103 1
После хтонл (а)
Значение Addr100 1
101 0
102 0
103 0
Означает ли это, что htonl () изменит порядок байтов независимо от архитектуры машины?