c从数组中移位2个字节

时间:2016-04-29 02:16:02

标签: c bit-shift

所以我一直试图从我拥有的数组中移位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 

1 个答案:

答案 0 :(得分:0)

这是因为char被提升为整数,其符号位,您需要在促销完成之前转换为unsigned值。所以 number = buffer[0] << 8 | buffer[1];应该是

number = (unsigned char)buffer[0] << 8U | (unsigned char)buffer[1];