的手册页htonl()
似乎建议您最多只能将其用于32位值。(实际上,ntohl()
是为unsigned long定义的,在我的平台上是32位。我想如果unsigned long为8字节,则适用于64位int)。
我的问题是我需要将64位整数(在我的情况下,这是一个无符号的long long)从big endian转换为little endian。现在,我需要进行特定的转换。但是,ntohl()
如果目标平台为大端字节序,那么函数(如)不会转换我的64位值,那就更好了。(我宁愿避免添加自己的预处理器魔术来执行此操作)。
我可以使用什么?我想要一些标准的东西(如果存在的话),但我愿意接受实施建议。我已经看到过去使用联合完成这种类型的转换。我想我可以有一个unsigned long long和一个char [8]的联合。然后相应地交换字节。(显然会在大端字节序的平台上中断)。
慕标5832272