相关疑难解决方法(0)

什么时候是htonl(x)!= ntohl(x)?(或者在同一台计算机上进行与网络字节顺序的转换时不相同?)

关于htonlntohl.何时将这两行代码中的任何一行评估为false.

 htonl(x) == ntohl(x);

 htonl(ntohl(x)) == htonl(htonl(x));
Run Code Online (Sandbox Code Playgroud)

换句话说,这两个操作何时在同一台机器上不相同?我能想到的唯一场景是一台机器,它不能用于表示整数的2的补码.

原因主要是历史,编码清晰度还是其他原因?

今天是否存在任何现代架构或环境,在这两个方向上,这些在同一台机器上的网络字节顺序转换是不同的代码?

sockets endianness

7
推荐指数
2
解决办法
2804
查看次数

如何在编译时确定字节序?

如何在编译时确定我的平台是小端还是大端?我已经看到很多方法可以在运行时使用强制转换来确定,以及一些与平台相关的选项.有便携式或标准方式吗?

constexpr bool is_little_endian = ?;
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
1
解决办法
353
查看次数

标签 统计

c++ ×1

endianness ×1

sockets ×1