所以我一直试图从我拥有的数组中移位2个字节,我有时会得到好的值而不是所有的时间。所以这是一个例子。
char buffer[2]; //current character buffer to store the bytes
unsigned int number; //the unsigned int to store values
number = buffer[0] << 8 | buffer[1]; //bitshifting
printf("%02x ", number);
在某些情况下,我似乎得到了这个。
ffffffbc // the bc seems to be correct however the f's are not
答案 0 :(得分:0)
这是因为char
被提升为整数,其符号位,您需要在促销完成之前转换为unsigned
值。所以
number = buffer[0] << 8 | buffer[1];
应该是
number = (unsigned char)buffer[0] << 8U | (unsigned char)buffer[1];