|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 jianhong_wu 于 2017-8-20 10:37 编辑
子非-苏州:
共用体,每一项完全共用内存首地址,我用在对32位寄存器的操作上面,里面的四项很方便操作,比如32位转4个8位:
- union t_un32{
- unsigned char un08[4];
- uint16_t un16[2];
- uint32_t un32;
- long sun32;
- };
复制代码
只要存在这个内存里面,就不需要移位转换了。
怀念依旧-顺德:
单字节转8位,如下:
- typedef unsigned char uchar;
- typedef unsigned int uint;
- typedef unsigned long ushort;
- union byte_type_t
- {
- uchar byte;
- struct p8_bit
- {
- char B0:1 ; // 1
- char B1:1 ; // 2
- char B2:1 ; // 3
- char B3:1 ; // 4
- char B4:1 ; // 5
- char B5:1 ; // 6
- char B6:1 ; // 7
- char B7:1 ; // 8
- } bits;
- };
复制代码
双字节转16位,如下:
- typedef volatile union byte_type_t BYTE;
- union word_type_t
- {
- ushort word;
- struct p16_bit
- {
- char bit0:1 ; // 1
- char bit1:1 ; // 2
- char bit2:1 ; // 3
- char bit3:1 ; // 4
- char bit4:1 ; // 5
- char bit5:1 ; // 6
- char bit6:1 ; // 7
- char bit7:1 ; // 8
- char bit8:1 ; // 9
- char bit9:1 ; // 10
- char bit10:1 ; // 11
- char bit11:1 ; // 12
- char bit12:1 ; // 13
- char bit13:1 ; // 14
- char bit14:1 ; // 15
- char bit15:1 ; // 16
- } bits;
- };
复制代码
结构体里面是一个char类型这样写的就可以了。我是做小家电那一块的,占内存是非常关键的。
|
|