本本

态度决定成败

导航

通讯中的字节网络顺序和字节主机顺序

写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。
 
其实数据的顺序是由cpu决定的,与操作系统无关。 
Intel   x86结构下,short型数0x1234表示为34   12,int型数0x12345678表示为78   56   34   12  
IBM   power PC结构下,short型数0x1234表示为12   34,int型数0x12345678表示为12   34   56   78
  
由于这个原因不同的机器之间无法通信,所以要转换成一种约定的数序,也就是网络字节顺序,其实就是如同power   pc那样的顺序 



   

下面是两个进行转换的接口:
 
//主机顺序转换成网络顺序或网络顺序转换成主机顺序
inline   unsigned   long   HTONL(unsigned   long   h)  
    {  
      return   (h>>24)+((h>>16)<<8)+((h>>8)<<16)+(h<<24);  
    }
 
//主机顺序转换成网络顺序或网络顺序转换成主机顺序 
    inline   unsigned   short   HTONS(unsigned   short   h)  
    {  
      return   (h>>8)+(h<<8);  
    } 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sergeycao/archive/2009/02/24/3933149.aspx

posted on 2009-08-18 14:54  本本  阅读(368)  评论(1编辑  收藏  举报