前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络编程之大小端

网络编程之大小端

作者头像
动动我试试
发布2020-03-12 15:38:05
6060
发布2020-03-12 15:38:05
举报
文章被收录于专栏:zhimingcowzhimingcow

大端&小端

用C/C++写网络程序时,要注意字节的网络顺序和主机顺序的问题。

  • 大端:高位在前,低位在后
  • 小端:高位在后,低位在前

假设unsigned int num = 0x12345678,内存起始位置为0x4000,则在内存中的存放顺序为:

内存地址

小端模式

大端模式

0x4000

0x78

0x12

0x4001

0x56

0x34

0x4002

0x34

0x56

0x4003

0x12

0x78

网络字节顺序&主机字节顺序

  • 网络字节顺序:网络会将收到的第一个字节作为高位,并依次存放,即大端模式
  • 主机字节顺序:跟cpu有关,如Inter的cpu采用小端模式,IBM的cpu采用大端模式

也就是说我们在发送一个多字节数值的时候,需要确保发送前是大端模式,接收方再将大端模式转换为本机的大端或小端模式,即:

  • 发送者:在内存中应该以大端方式存放,即调用htonl()或htons()
  • 接收端:将网络字节顺序转换为主机字节顺序,即调用ntohl()或ntohs()

注意

数字所占位数小于或等于一个字节(8 bits)时,不要用htons转换。这是因为对于主机来说,大小尾端的最小单位为字节(byte)。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大端&小端
  • 网络字节顺序&主机字节顺序
  • 注意
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档