C语言之字段类型应用的技巧

举报
心跳包 发表于 2021/11/13 01:30:26 2021/11/13
2.1k+ 0 0
【摘要】     在各种设备间的传输协议或者通信协议中,一般对数据的字段类型都各不相同,比如BCD码,BIN码,ASCII码等。下面接收几种字段类型定义的实例 1.BCD码 定义一个16位机器编码 2018041912345678 uint8_t Dev[8] ;   一般两种存储方式: 大端模式:高位存在低位地址...

    在各种设备间的传输协议或者通信协议中,一般对数据的字段类型都各不相同,比如BCD码,BIN码,ASCII码等。下面接收几种字段类型定义的实例

1.BCD码

定义一个16位机器编码 2018041912345678

uint8_t		Dev[8] ;
 

  一般两种存储方式:

大端模式:高位存在低位地址上


      Dev[0]=0x20;
      Dev[1]=0x18;
      Dev[2]=0x04;
      Dev[3]=0x19;
      Dev[4]=0x12;
      Dev[5]=0x34;
      Dev[6]=0x56;
      Dev[7]=0x78;
  
 

小端模式:低位存在高位地址上


      Dev[0]=0x78;
      Dev[1]=0x56;
      Dev[2]=0x34;
      Dev[3]=0x12;
      Dev[4]=0x19;
      Dev[5]=0x04;
      Dev[6]=0x18;
      Dev[7]=0x20;
  
 

2.BIN码

定义一个费用变量

uint16_t money;
 
uint8_t buf[128];
 

money=0x1234;

一般两种存储方式:

大端模式:高位存在低位地址上

buf[0]=0x12; buf[1]=0x34
 

小端模式:低位存在高位地址上

buf[0]=0x34; buf[1]=0x12
 

3.字符串

 都是以ASCII码形式上传

设备号 


      const char temp[]="AY03B000017090003A";
      uint8_t buf[],len;
      len=sprintf((char *)buf, "%s",temp);
  
 

这是大端存储方式

如果小端存储方式还有进行数组掉头


      uint8_t datbuf[100];
      strchghead(datbuf,(uint8_t *)&buf,len)
      void strchghead(unsigned char *dbuf,unsigned char *sbuf,unsigned int slen)
      {
      	unsigned int i;
      	for(i=0;i<slen;i++)
      	{
      		dbuf[i] = sbuf[slen-i-1];
      	}
      }
  
 

文章来源: xintiaobao.blog.csdn.net,作者:心跳包,版权归原作者所有,如需转载,请联系作者。

原文链接:xintiaobao.blog.csdn.net/article/details/79992790

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。