综合技术
直播中

杨林

7年用户 196经验值
私信 关注
[问答]

C#数据进制转换显示错误是怎么回事?

现在遇到一个问题,下位机发送两个数据到上位机,上位机可以正确按字节接受到了。剩余的是将两个字节数据合并成一个整数,用于波形显示。具体如下
单片机要发送的数据是:
[C#] 纯文本查看 复制代码
short pitch=50,roll=280
上位机按照十六进制接收数据如下:
[C#] 纯文本查看 复制代码
00 32 01 18
这个结果是正确的。
我将每两个字节数据拼接成一个C#里面的Int 32 类型的数据,但结果显示错误:
[C#] 纯文本查看 复制代码
00 32 01 18 //上位机接收到的十六进制数据69632 1024//数据拼接后显示的数据
采用的拼接方法如下:
[C#] 纯文本查看 复制代码
pitch = (UsefulData[0] << 8 + UsefulData[1]);//UsefulData是上位机解析数据帧之后存储的有效数据数组                              roll = (UsefulData[2] << 8 + UsefulData[3]);
单片机发送数据是高低位是高字节在前,所以这个原因被排除了,那请问还可能是其他什么原因呢?

回帖(5)

李慧芳

2019-10-29 07:36:39
[C#] 纯文本查看 复制代码
private void Form1_Load(object sender, EventArgs e){    byte[] UsefulData = new byte[10];    UsefulData[0] = 0;    UsefulData[1] = 0x32;    UsefulData[2] = 0x01;    UsefulData[3] = 0x18;    short pitch = (short)(((short)UsefulData[0] << 8) + UsefulData[1]);    short roll = (short)(((short)UsefulData[2] << 8) + UsefulData[3]);}
举报

陈欢兆

2019-10-29 07:55:57
帮顶
举报

黄敏

2019-10-29 08:06:12
自己默默顶一下
举报

邢洋

2019-10-29 08:13:34
转换格式要搞对,帮你到这了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分