专栏名称: 嵌入式微处理器
关注这个时代最火的嵌入式微处理器,你想知道的都在这里。
今天看啥  ›  专栏  ›  嵌入式微处理器

由字节对齐引发的一场“血案“

嵌入式微处理器  · 公众号  ·  · 2024-07-30 12:00

文章预览

最近在搞个网络通信协议, 采用socket udp传输, 运行时居然报段错误了。 经过debug,发现居然是因为字节对齐问题导致的。 这个问题在实现通信协议,是经常会遇到的问题。 为了方便读者理解, 我把内容做了简化,分享给大家。 1、协议说明 通信协议信令格式如下: typedef   struct   protocol_msg_s {  UINT8 msgType;  UINT8 data1;  UINT8 data2;  UINT16 len;   char  data[ 100 ]; }PRO_MSG; 根据协议格式,我造了一个数据frm,代表我收到的某个信令,  UCHAR frm[]={ 0x12 , 0x34 , 0x56 , 0x00 , 0x07 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 }; 根据协议, 信令的字段与原始帧对应关系如下: 于是,我实现了一个简单的解析代码【该代码有问题】。 int   main ( int  argc,  char  **argv) {   int  ret;   int  frm_len =  0 ;  UINT8 frm[]={ 0x12 , 0x34 , 0x56 , 0x00 , 0x07 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x0 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览