字面上混淆了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:
100 1 101 0 102 0 103 0
在htonl之后(a)
100 0 101 0 102 0 103 1
============================================ 在Big Endian机器上:
100 0 101 0 102 0 103 1
在htonl之后(a)
100 1 101 0 102 0 103 0
这是否意味着无论机器架构如何,htonl()都会改变字节的顺序?