c语言中使用冒号结构体拆分16位的数的高字节和低字节

typedef struct{

uint16_t  high_value:8;

uint16_t low_value:8;

}CODE;

CODE mm;
mm.high_value = 0xaa; 
mm.low_value  = 0x0;

uint16_t bb;
memcpy(&bb,&mm,sizeof(CODE));

//当然也可以反过来使用:

uint16_t bb = 0x12;
memcpy(&mm,&bb,sizeof(CODE));

相较于如下形式的定义操作起来更为便捷。

typedef struct{

uint8_t  high_value;

uint8_t low_value;

}CODE;

CODE nn;

nn.high_value = 0xAA;

nn.low_value = 0x0;

uint16_t  aa = nn.high_value<<8+nn.low_value;

猜你喜欢

转载自blog.csdn.net/modi000/article/details/112564558