将大端序浮点数转换为小端序

26

有没有可能将大端序的浮点数转换为小端序?我从一个PowerPC平台得到了一个大端序值,我要通过TCP发送给一个Windows进程(小端序)。这个值是一个浮点数,但是当我将值memcpy到Win32浮点类型中,然后调用_byteswap_ulong函数对该值进行字节交换时,我总是得到0.0000?我做错了什么?


请看这个问题:https://dev59.com/wXI-5IYBdhLWcg3wlpQM - Drakosha
认为它们都是IEEE格式,但你应该再确认一下。 - Mark Ransom
如果您不调用 _byteswap_ulong,会发生什么? - Maciej Hehl
不要实现这样的东西。请查看boost::endian: http://www.boost.org/doc/libs/1_64_0/libs/endian/doc/index.html - morteza
@morteza的回答是他尝试但未能实现删除线,因为boost::endian中的浮点支持已被移除,因为它无法正常工作。 - AnotherParker
11个回答

-1
快速技巧:
#define FBIT32_REVERSE(val) htonl(*(long*) &val)

2
我不认为这里需要宏。"Hack"的问题在于它们是不干净的,而且经常不安全(或者至少很难正确使用),而简单地调用(常规的)函数完全可以正常工作,并且更加清晰和明确。此外,你应该提到htonl()是一个特定于Windows的函数。当你回答一个已经有接受答案的13年老问题时,确保让它真正有用。 - Fareanor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接