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:

Значение Addr
100   1
101   0
102   0
103   0

После хтонл (а)

Значение Addr
100   0
101   0
102   0
103   1

============================================На Big Endian машине:

Значение Addr
100   0
101   0
102   0
103   1

После хтонл (а)

Значение Addr
100   1
101   0
102   0
103   0

Означает ли это, что htonl () изменит порядок байтов независимо от архитектуры машины?

Ответы на вопрос(2)

Ваш ответ на вопрос