计算坐标时是否需要减32768?

发布于 2024-12-06 13:22:44

《2450雷达上报数据解析参考.doc》中,需要减32768(右图)。《LD2450 串口通信协议 V1.03.pdf》中,没有减32768(左图)。
所以,请问,计算坐标时是否需要减32768?如果需要,为什么 >= 128 的时候需要,else的时候不需要?
32768.JPG

查看更多

关注者
0
被浏览
90
海凌科技术-张工
海凌科技术-张工 认证专家 2024-12-06
这家伙很懒,什么也没写!
  1. 16 位带符号整数的范围是 [-32768, 32767]。

原始数据是无符号整数 0x0000 ~ 0xFFFF(即 0 ~ 65535)。
当数据需要转换为有符号整数时:
若数值大于等于 32768,它表示负数。为了将其转换为正确的负数值,需要减去 65536。
对于正数部分(小于 32768),数据本身不需要调整。
在这里的代码中,减 32768 是因为高字节已经表明这是负数

  1. else 分支的条件是 str.substring(2, 4).toInt(16) < 128,表示高字节不超过 0x7F,即该数值是 正数。

由于正数在无符号和带符号的表示中值是相同的,因此无需减 32768。
然而,else 分支将结果直接取反(0 - ...),因为原始数据是相对于某个坐标轴对称的,需要取反来调整为实际的坐标值。

  1. 最后,可以得出结果:

当原始数据表示负数时(高字节大于等于 128),需要进行此转换。
当原始数据表示正数时(高字节小于 128),不需要减去 32768。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览