htonl()
的手册似乎表明您只能使用它来处理最多32位的值。(实际上,ntohl()
被定义为无符号长整型,在我的平台上是32位。我想如果无符号长整型是8字节,它将适用于64位整数)。
我的问题是我需要将64位整数(在我的情况下,这是一个无符号长长整型)从大端转换为小端。现在,我需要做这个特定的转换。但如果函数(例如ntohl()
)不会在目标平台为大端时转换我的64位值,则更好。(我宁愿避免添加自己的预处理器魔术来完成此操作)。
我可以使用什么?如果存在标准解决方案就更好了,但我也可以接受实现建议。我曾经看到过使用联合进行此类型转换的方法。我想我可以有一个带有无符号长长整型和char[8]的联合体。然后根据需要交换字节。(显然,它将在大端平台上出现错误)。