gpt4 book ai didi

c++ - 从 2 个 16 位有符号字节中获取有符号整数?

转载 作者:行者123 更新时间:2023-11-30 00:38:50 25 4
gpt4 key购买 nike

所以这个传感器通过返回两个(高和低)有符号字节返回 -500-500 之间的有符号值。我如何使用这些来确定实际值是多少?我知道我需要做 2 的补码,但我不确定怎么做。这就是我现在拥有的 -

real_velocity = temp.values[0];
if(temp.values[1] != -1)
real_velocity += temp.values[1];

//if high byte > 1, negative number - take 2's compliment
if(temp.values[1] > 1) {
real_velocity = ~real_velocity;
real_velocity += 1;
}

但它只返回正值的负值。因此,例如,-200 返回字节 255(高)和 56(低)。添加这些是 311。但是当我运行上面的代码时,它告诉我 -311。感谢您的帮助。

最佳答案

 -200 in hex is 0xFF38, 

你得到两个字节 0xFF 和 0x38,将这些转换回十进制你可能会认出它们

0xFF = 255,
0x38 = 56

您的传感器没有返回 2 个带符号字节,而是返回一个带符号的 16 位数字的高字节和低字节。

所以你的结果是

value = (highbyte << 8) + lowbyte

值是一个 16 位有符号变量。

关于c++ - 从 2 个 16 位有符号字节中获取有符号整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9730212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com