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

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

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

1.BCD码

定义一个16位机器编码 2018041912345678

uint8_t		Dev[8] ;
 

  一般两种存储方式:

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


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

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


  
  1. Dev[0]=0x78;
  2. Dev[1]=0x56;
  3. Dev[2]=0x34;
  4. Dev[3]=0x12;
  5. Dev[4]=0x19;
  6. Dev[5]=0x04;
  7. Dev[6]=0x18;
  8. 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码形式上传

设备号 


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

这是大端存储方式

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


  
  1. uint8_t datbuf[100];
  2. strchghead(datbuf,(uint8_t *)&buf,len)
  3. void strchghead(unsigned char *dbuf,unsigned char *sbuf,unsigned int slen)
  4. {
  5. unsigned int i;
  6. for(i=0;i<slen;i++)
  7. {
  8. dbuf[i] = sbuf[slen-i-1];
  9. }
  10. }


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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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

举报
请填写举报理由
0/200