按位与&,按位与运算,当且仅当都为1的时候结果才为1,即1&1==1,1&0==0&1==0&0==0。
一个字节有8位,可以用原来的值和0x3f(就是0011 1111)按位与,即可得到后六位。前两位就是和0xc0按位与,然后右移六位。
多字节,取自己想要的字节,例如:
三字节数据:(FFFFFF&0x00ff00)/256,得到中位字节。高位字节:FFFFFF/65536或者右移16位。低位字节,&0x0000ff,左移16位。
send_msg.sendData[5] = Cs_stMainRly|Cs_stPreCharRly<<2|Cs_stAnnexPreRly<<4|Cs_stAnnexRly<<6;
将一个字节8个位按两个两个位填充
做个记录:
拆分
//16位拆成两个8位
u16 data16 = 0x1234;
u8 data8_H,data8_L;
data8_H = (u8)(data16 >> 8);
data8_L = (u8)data16;
32位拆成4个8位
方法一:
u32 data32 = 0x12345678;
u8 data8_1,data8_2,data8_3,data8_4;
data8_1 = (u8)(data32 >> 24);
data8_2 = (u8)(data32 >> 16);</