浮点字节序?

时间:2010-05-31 17:50:03

标签: c++ networking endianness

我正在为实时离岸模拟器编写客户端和服务器,并且由于我必须通过套接字发送大量数据,因此我使用二进制数据来最大化我可以发送的大量数据。我已经知道整数字节序,以及如何使用htonl和ntohl来规避字节序问题,但我的应用程序,就像几乎所有的模拟软件一样,处理大量浮点数。

我的问题是:是否存在一些处理浮点数二进制格式的字节序问题?我知道我的代码运行的所有机器都使用浮点运算的IEEE实现,但在处理浮点数时是否存在一些字节序问题?

由于我只能访问具有相同endian的计算机,因此我无法自行测试。所以,如果有人可以帮助我,我会很高兴。

提前致谢。

3 个答案:

答案 0 :(得分:17)

根据Wikipedia

  

浮点和字节序

     

在某些机器上,整数是   以小端形式表示,   浮点数是   以big-endian形式表示。   因为有很多浮点   格式,缺乏标准   “网络”代表,没有标准   用于传输浮点值   已经成了。这意味着   浮点数据写在一个上   机器可能无法读取   另一个,即使是这样的情况   两者都使用IEEE 754浮点   算术以来的字节序   记忆表示不是一部分   IEEE规范。

答案 1 :(得分:8)

是的,浮点可能依赖于endianess。有关信息,请参阅Converting float values from big endian to little endian,请务必阅读评论。

答案 2 :(得分:-6)

编辑:以下是错误的答案(留下让人们知道这种“有点受欢迎”的观点是错误的,请阅读接受的答案和对此答案的评论)

- 错误的回答 -

没有浮点字节序或整数字节等等。它只是二进制表示字节序。 机器是小端的,还是它的大端。这意味着它将代表任何数据类型的二进制表示中的MSb / MSB作为其第一个比特/字节或最后一个比特/字节。 而已。

- 错误答案---