最近在做数据传输,某一个参数占了两个字节,但是在下位机读取数据时是一个字节一个字节读取之后放入数组,data[0]=0x03,data[1]=0xe8,最终希望变成0x03e8。我就想先把它们变成十六位,在左移8位即可,于是有了下面的代码
u8 F1=(data[0]&0x00FF)<<8;
但是在串口读取到的值却一直都是0x0000,如果是 u8 F1=(data[0]&0x00FF)<<4结果就是0x0080,也就是只能在8位数据中移动,一直没找到原因,最后的最后我的老天爷问题竟然出在了u8,没错,定义了F1为无符号8位,所以导致我只能左移右移8位。
u16 F1=(data[0]&0x00FF)<<8;
改成u16就可以了!!!