【求助】串口数据解析问题

Sinmo815 2017-04-11 05:17:03
串口收到 16进制的字符串 0A 01 02 03 04 05 06
我需要一个uint temp的类型来存放,看了些资料是用移位的方式。
temp = 00001010(0A);
temp << 8;
temp += 00000001(01);
...
请问这种方式对吗?为什么我赋值后uint不是32个数字呢?
...全文
90 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sinmo815 2017-04-11
  • 打赏
  • 举报
回复
引用 6 楼 u011205268 的回复:
[quote=引用 5 楼 angel6709 的回复:] 0A 01 02 03 uint x=0; x=0x0a; x=x<<8; x+=0x01; x=x<<8; ..........
是这样的,我需要把0A 01 转换成 2进制类型,这样我才能对照说明文档解析。 如果直接放入0A了(00001010)请问有办法截取到指定的位置吗?[/quote] 我那程序试了下,直接写入类型后转成 2进制是可以的,谢谢。
Sinmo815 2017-04-11
  • 打赏
  • 举报
回复
引用 5 楼 angel6709 的回复:
0A 01 02 03 uint x=0; x=0x0a; x=x<<8; x+=0x01; x=x<<8; ..........
是这样的,我需要把0A 01 转换成 2进制类型,这样我才能对照说明文档解析。 如果直接放入0A了(00001010)请问有办法截取到指定的位置吗?
angel6709 2017-04-11
  • 打赏
  • 举报
回复
0A 01 02 03 uint x=0; x=0x0a; x=x<<8; x+=0x01; x=x<<8; ..........
Sinmo815 2017-04-11
  • 打赏
  • 举报
回复
引用 3 楼 xuggzu 的回复:
不知道楼主的字符串哪个是高位?以下是例子,就当第一个是高位: uint rlt = (Convert.ToUInt32("0A", 16) << 24) + (Convert.ToUInt32("01", 16) << 16) + (Convert.ToUInt32("02", 16) << 8) + (Convert.ToUInt32("03", 16));
请问 << 24是什么意思,高位是从左向右的。
xuggzu 2017-04-11
  • 打赏
  • 举报
回复
不知道楼主的字符串哪个是高位?以下是例子,就当第一个是高位: uint rlt = (Convert.ToUInt32("0A", 16) << 24) + (Convert.ToUInt32("01", 16) << 16) + (Convert.ToUInt32("02", 16) << 8) + (Convert.ToUInt32("03", 16));
Sinmo815 2017-04-11
  • 打赏
  • 举报
回复
引用 1 楼 angel6709 的回复:
你的数据比较胖,int太瘦了,装不了。
抱歉,没说完,我判断帧头只取前4个字节。 uint是32位的嘛,装得下的
angel6709 2017-04-11
  • 打赏
  • 举报
回复
你的数据比较胖,int太瘦了,装不了。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧