欢迎光临散文网 会员登陆 & 注册

协议的编写 (sprintf的用法)

2021-06-28 10:50 作者:GXTon_阿通  | 我要投稿

有时候编写协议的时候,需要进行一定格式的数据返回.

比如把十进制数据按返回十六进制放到指令中, 4096对应的十六进制就是0x10 0x00.

即4096变换成十六进制0x1000,然后拆分成两个字节:0x10和0x00.

上面这种情况就可以用sprintf函数.

怎么把一个速度(4096),转换成十六进制的 0x10 ,0x00 进行返回呢?

步骤1:

int rate=4096;

然后进行移位:

unsigned int part1=0;

unsigned int part2=0;

part1=((unsigned int)rate)<<8;

part2=((unsigned int)rate);

然后调用sprintf进行数据格式的转换,并填充到缓存中.

char DataBuf[50]={0};

  sprintf(DataBuf,"$DATA,%2x,%2x*",

(uint32_t)part1,  

(uint32_t)part2   

);

这样rate就会被分成两部分,放入到DataBuf[]中了,并且是十六进制的.

如果想要在里面添加东西.比如包尾校验.

DataCheckSum = DataCheck(DataBuf);

sprintf(BufOut,"%s%02X\r\n",DataBuf,DataCheckSum);

这样就可以把数据保存到BufOut[]中了.


协议的编写 (sprintf的用法)的评论 (共 条)

分享到微博请遵守国家法律