网络字节序之大小端(字节序与比特序)

本文探讨了字节序在网络编程中的重要性,特别是对于RTP包协议的处理。介绍了大端序和小端序的概念,指出字节序与编程语言无关,主要由处理器架构决定。同时,解释了比特序以及位域在结构体中的存储规则,并讨论了在不同字节序系统中处理RTP头的策略,包括何时需要进行字节序转换。
摘要由CSDN通过智能技术生成

      引言:最近在网上看了很多博客,想要深入了解大小端问题,主要是做毕设时,RTP包协议的结构体定义有两种方式,即大端和小端。但是一些博客并没有讲到理解大小端的本质问题,在这里按自己的理解扩充一下,可能有错,望理解!!!

1. 字节序

    字节序即字节的存储顺序,如果数据都是单字节的,那怎么存储无所谓了,但是对于多字节数据,比如int,double等,就要考虑存储的顺序了。字节序是硬件层面的东西,通常只和你使用的处理器架构有关,而和编程语言无关。字节序分为大端序和小端序。

   大端序:数据的高位字节存放在地址的低端 低位字节存放在地址高端。

   小端序:数据的高位字节存放在地址的高端 低位字节存放在地址低端。

2. 比特序

     字节序是一个对象中的多个字节之间的顺序问题,比特序就是一个字节中的8个比特位(bit)之间的顺序问题。一般情况下系统的比特序和字节序是保持一致的。以二进制数值10110101为例,其在不同平台下的内存位序如下:
      大端的含义是数值的最高位1(最左边的1)放在了内存起始位置上,即数值10110101的大端内存布局为10110101。

      小端的含义是数值的最低位1(最右边的1)放在了内存起始位置上,即数值10110101的小端内存布局为10101101。

 3. 位域

      对于位域有一个约定:在C语言的结构体中如果包含了位域,如果位域A定义在位域B之前,那么位域A总是出现在低地址的比特位。 这就决定了网络编程中位域在定义时必须处理大小端问题。(同样,结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值