银河国际购物中心苹果:htons 与 ntohs 的区别

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 16:57:49

虽然注册CSDN已经有好几年了,学习写程序也有两年的时间了。对于绝大数人来说,我还是得菜鸟。平时遇到什么问题也会来到这个平台搜索别人的解答。也从这个平台上获益很多。

今天在公司因为一个问题和同事就关于htons与ntohs有没有区别探讨了一下,因为我平时也没留意过,凭着我自己的理解,认为是没有区别的。比如,同在X86的机器下,这两个函数都不是把小端的内存表示方法转成大端的吗。在回来的路上,我想回来查查,同时也想到何不就这个问题写下来,方便自己以后查看,也帮助那些想要解决同样问题的同志呢,于是就开始了我第一篇技术贴。希望我自己也会一直这么继续下去。好了闲话少说,开始正题吧。

我用vc试了一下,结果是相同的。



我就想去看看linux的源代码(/include/netinet/in.h)

# if __BYTE_ORDER == __BIG_ENDIAN

# define ntohl(x) (x)
# define ntohs(x) (x)
# define htonl(x) (x)
# define htons(x) (x)
# else
if __BYTE_ORDER == __LITTLE_ENDIAN
  define ntohl(x) __bswap_32 (x)
  define ntohs(x) __bswap_16 (x)
  define htonl(x) __bswap_32 (x)
  define htons(x) __bswap_16 (x)
endif
# endif


代码是一样的。


ps: 开始我以为htons是函数,在源码包找了两个小时都没有找到,在绝望的时候看了下头文件,我汗颜了。