C语言 位序 字节序 和 网络字节序 帧格式

原创 2015年07月07日 19:09:23

在我们定义结构体时,从上往下,第一个成员占用这个结构体变量的最低地址。从上往下依次累加。当我们定义结构体位域时,也是这样,第一个定义的位字段,占用这个字节中的最低的位地址。最后一个占用高地址。所以说字节序和位序是统一的。

但是当我们编写网络程序的时候,要注意网络字节序和位序都是大端序的,而主机很多都是小端序。所以在网络中的第一个位字段通常放在一个字节的末尾,而在网络中的最后一个字节的位字段,则放在一个字节的前面。

typedef struct {
	uint8_t type: 4;
	uint8_t flag: 1;  //1: control, 0:data
	uint8_t extension: 1;
	uint8_t R: 2;
} __attribute__((__packed__)) MacCtlHdr_t;

这个是小端序主机上的定义,对应于下图中的帧格式

typedef struct {
	uint8_t RN_M4: 4;
	uint8_t cause: 3;
	uint8_t type: 1;
	uint8_t RN_M8: 8;
	uint8_t RN_L8: 8;
	uint8_t R: 4;
	uint8_t bsr: 4;
}__attribute__((__packed__)) RA_HEADER;

对应于这样的帧格式:

可以这样理解本地存储的是小端序,但是机器发送的时候是大端序。对已从每个字节的高位先行发送。所以顺序是第一字节的type,cause,RN4,之后是第二字节RNM8和第三字节RNL8,之后是第三字节的bsr和R。

字节序(byte order)和位序(bit order)

**字节序(byte order)和位序(bit order)** l...
  • liuxingen
  • liuxingen
  • 2015年05月01日 17:25
  • 20225

Linux 网络编程——网络字节序、地址转换

一、字节序的概念 字节序是指多字节数据的存储顺序,在设计计算机系统的时候,有两种处理内存中数据的方法:大端格式、小端格式。 小端格式(Little-Endian):...
  • lianghe_work
  • lianghe_work
  • 2015年04月21日 14:43
  • 2173

c/c++字节序转换

c/c++字节序转换 博客分类:  网络编程    字节序(byte order)关系到多字节整数(short/int16、int/int32,int64)和浮点数的各字节在内存...
  • hanjw05
  • hanjw05
  • 2016年12月27日 22:52
  • 1753

c# 主机和网络字节序的转换 关于网络字节序和主机字节序的转换

最近使用C#进行网络开发,需要处理ISO8583报文,由于其中有些域是数值型的,于是在传输的时候涉及到了字节序的转换。 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有两种字节...
  • testcs_dn
  • testcs_dn
  • 2014年03月10日 09:28
  • 8236

[C#]大小端字节序(Big Endian和Little Endian)

最近赶的一个项目是一个C#写的地面站,里面用到了一个变量 isBigEndian ,因为是改别人的代码,而且没有对应的文档说明,注释也是一个悲剧(而且是半开源的,核心代码都打成了DLL,人生感觉都要打...
  • humanking7
  • humanking7
  • 2016年04月14日 23:20
  • 4918

c#字节序转换

java默认就是大端字节序,和网络字节序是一至的,所以不转换也不会有问题,  而c#在windows平台上是小端字节序。  网络发送字节流是按大端序发送,也就是从左到右发送,和c#的小端序相反,造...
  • u014659211
  • u014659211
  • 2016年10月26日 19:50
  • 795

c# 通信中字节序处理

最近在写一个短信下发功能,客户端使用c#和java的短信网关的进行网络通信。 之前使用java进行开发,一切正常,改用c#无法收到网关应答。 想了半天意识到是不是网络字节序问题, java默认就...
  • adenfeng
  • adenfeng
  • 2014年12月02日 09:55
  • 1465

网络字节序和主机字节序详解!!!

我们都知道,如今的通讯方式已经趋向与多样化,异构通信(计算机软件(操作系统) +    计算机硬件(内核架构,ARM,x86)不同)也已经很普遍了,如,手机和电脑中的qq进行通信,,, 同时,在计...
  • msdnwolaile
  • msdnwolaile
  • 2016年02月24日 09:52
  • 7774

字节序与位序

文章出处:http://blog.csdn.net/goldenhunter/article/details/4508717 参考文献:http://en.wikipedia.org/wiki/En...
  • ixidof
  • ixidof
  • 2012年08月04日 17:33
  • 2006

字节序、位序

字节序     字节序,又称端序、尾序,英文单词为Endian,该单词来源于于乔纳森·斯威夫特的小说《格列佛游记》,小说中的小人国因为吃鸡蛋的问题而内战,战争开始是由于以下的原因:我们大家都认为,吃...
  • xhkl
  • xhkl
  • 2011年05月01日 09:56
  • 3556
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言 位序 字节序 和 网络字节序 帧格式
举报原因:
原因补充:

(最多只允许输入30个字)