我有一个可能很简单的问题,但我似乎无法理解。
我正在为发送串行流的数据记录器创建一个串行解析器。在产品文档中说明了计算,但我不明白。
Lateral = Data1 And 0x7F + Data2 / 0x100
If (Data1 And 0x80)=0 Then Lateral = -Lateral
Data1
和 0x7f
是什么意思?我知道 7F
是 127
,但除此之外我不明白与 And 语句的组合。
真正的公式是什么样的?
最佳答案
按位与 - 当且仅当两个输入中的相应位均被设置时,输出中的某个位才会被设置。
由于您的标记表明您正在使用 C 语言,因此您可以使用 & 运算符执行按位与。
(注意,0x7F 是 01111111,0x80 是二进制的 10000000,因此与它们进行 AND 运算分别对应于提取一个字节的低七位和提取一个字节的高位。)
关于c - 串口数据解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15565289/