数据转换问题

[复制链接]
查看11 | 回复3 | 2021-1-27 07:11:46 | 显示全部楼层 |阅读模式
下位机向上位即发送数据,数据需要把数据位高在前低在后转换为低在前高在后,然后在发送出去,一次发送64个,数据里包含整型、浮点、字符等各种数据,而接收时则需要将数据位转换回来,用VC应该怎样实现,请各位大侠教教小弟吧。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:11:46 | 显示全部楼层
因为计算机的数据格式就是低在前高在后,因此下位机辛苦给按计算机格式转换了,这样,你上位机就可以定义一个结构,这个结构和下位机的结构一致或和下位机发送的数据顺序一致,上位机收完下位机发的数据后直接赋给结构就行了,这样计算机就不需再组合成各种类型的数据了.
structD_Str
{
unsignedshorta;
charb;
charreserve;//保留,是为了字节对齐
floatc;
}
BYTERBuff[8];
D_Strda;
memcpy(&da,RBuff);
这样就行了,记住上位机的数据结构里的字节数一定要偶数,不要奇数,如果是奇数,就加个保留字节来对齐

回复

使用道具 举报

千问 | 2021-1-27 07:11:46 | 显示全部楼层
采用循环移位的方法:
循环移位区别于一般移位的是移位时没有数位的丢失。循环左移时,用从左边移出的位填充字的右端,而循环右移时,用从右边移出的位填充字的左侧。这种情况在系统程序中时有使用,在一些控制程序中用得也不少。
设有数据说明:
a=01111011,循环左移2位正确结果:11101101

过程:
b=a>>(8-2)用来得到正常左移丢失的位和循环移位后其正确位置b=00000001;
a=a>(8-2))|(a>(N-n))|(a>>n)
循环右移n(a>n)
C语言的位运算功能是其区别于其他大多数高级程序设计语言的特色之一,用它可以方便实现一些特殊功能,灵活掌握是用C程序编写系统程序的基础。

回复

使用道具 举报

千问 | 2021-1-27 07:11:46 | 显示全部楼层
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行