网络字节序和主机字节序

网络编程中经常用到的网络字节序和主机字节序的转换,比如IP 字符串(暂时只讨论IPV4),是以三个点号和四个数字组成,并以点号相分隔的字符串。比如说,IP是225.224.223.222,那么整数是不是就是 0XFFFEFDFC呢?答案是不一定。虽然此IP地址在内存中的存储顺序从左至右依次是,”FF”,“FE”, “FD”, “FC”两个字节。但是这个存储顺序代表的实际数值是何值,得看CPU体系架构,是 little-endian 还是 big-endian.如果是前者,就表示高位存在右边。后者,高位存在左边,所以,整数 0XFFFEFDFC 的存储情况如下:
0xFF 0xFE 0xFD 0xFC # big-endian
0xFC 0xFD 0xFE 0xFF # little-endian
一般 Intel 的 CPU 是 little-endian, 所以IP 225.224.223.222 所对应的整数应该是:0XFCFDFEFF。0XFFFEFDFC 对应的IP则是:222.223.224.225。

转化的方法如下,输入是点分的IP地址格式(如A.B.C.D)的字符串,从该字符串中提取出每一部分,转换为ULONG,假设得到4个ULONG型的A,B,C,D,
ulAddress(ULONG型)是转换后的结果,
ulAddress = D<<24 + C<<16 + B<<8 + A(网络字节序),即inet_addr(const char *)的返回结果
另外,我们也可以得到把该IP转换为主机序的结果,转换方法一样
A<<24 + B<<16 + C<<8 + D


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值