我有一个传感器,它以三个字节提供输出。我是这样读的:
unsigned char byte0,byte1,byte2;
byte0=readRegister(0x25);
byte1=readRegister(0x26);
byte2=readRegister(0x27);
现在我想将这三个字节合并为一个数字:
int value;
value=byte0 + (byte1 << 8) + (byte2 << 16);
它给了我从 0 到 16,777,215 的值,但我期望值从 -8,388,608 到 8,388,607。我虽然int
已经签署了它的实施。即使我尝试定义它,signed int value;
它仍然只给我正数。所以我想我的问题是如何将 int 转换为它的二进制补码?
谢谢!