字节序与网络字节序

CPU向内存保存数据的方式有2种,这意味着CPU解析数据的方式也分为2种

大端序:高位字节存放到低位地址

小端序:高位字节存放到高位地址

假设在0x20号开始的地址中保存4字节int类型数0x12345678,大端序CPU保存方式如下:

0x20号     0x21号     0x22号     0x23号

  0x12          0x32        0x56         0x78

整数0x12345678, 0x12是最高位字节,0x78是最低位字节。因此大端中先保存最高位字节0x12,

小端序保存方式如下:

 0x20号     0x21号     0x22号     0x23号

  0x78          0x56        0x34         0x12

先保存的是最低位字节0x78,每种CPU的保存方式均不同,目前主流的Intel系列CPU以小端序方式保存数据

网络字节序统一为大端序

s指的是short,l指的是long(linux中long占4个字节),htons解释为把short型数据从主机字节序转化为网络字节序,

ntohs解释为把short型数据从网络字节序转化为主机字节序

in_addr_t inet_addr(const char *string);

将字符串形式的ip地址转化为32位整型数据,该函数在转换过程中同时进行网络字节序转换,成功时返回32位整型数,失败时会返回INADDR_NONE

 

int inet_aton(const char *string, struct in_addr *addr);

此函数会自动把ip地址填入该结构体变量

atoi把字符串类型转换为整数型

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值