我有一个数字是“有效字节”,它可以是0或255。
这意味着0或-1。
如何一次将255转换为-1。
我有一个不适合我的函数:

acc->x = ((raw_data[1]) << 8) | raw_data[0];

最佳答案

假设每8位设置为1意味着负(254==-2),那么从有符号类型的加宽转换应该做:

int n = (signed char)somebyte;

所以
unsigned char rawdate[2] = ...;
int msbyte = (signed char)rawdata[1];
acc->x = (msbyte << 8) | (raw_data[0] & 0xFF);

关于c - 二进制补码stm32 c,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8455682/

10-10 21:29