关于htonl和ntohl.何时将这两行代码中的任何一行评估为false.
htonl(x) == ntohl(x);
htonl(ntohl(x)) == htonl(htonl(x));
Run Code Online (Sandbox Code Playgroud)
换句话说,这两个操作何时在同一台机器上不相同?我能想到的唯一场景是一台机器,它不能用于表示整数的2的补码.
原因主要是历史,编码清晰度还是其他原因?
今天是否存在任何现代架构或环境,在这两个方向上,这些在同一台机器上的网络字节顺序转换是不同的代码?
如何在编译时确定我的平台是小端还是大端?我已经看到很多方法可以在运行时使用强制转换来确定,以及一些与平台相关的选项.有便携式或标准方式吗?
constexpr bool is_little_endian = ?;
Run Code Online (Sandbox Code Playgroud)