用移位还是联合体

[复制链接]
zhanghqi 发表于 2015-3-2 20:40 | 显示全部楼层
是啊,Tobyte 或 byte 没有实际的意义,我是想能不能用两个关键字表示其中的单个字节,用一个关键字表示整体,形式如:
Value_2  Value.2  Value(2)  Value[2]  ----引用单个字节
value ----引用整体
liliang9554 发表于 2015-3-2 20:40 | 显示全部楼层

用联合体,然后:
#define value     value.dw   
#define value_0 value.byte.b0
#define value_1 value.byte.b1
#define value_2 value.byte.b2
#define value_3 value.byte.b3
不就可以满足要求了嘛。
dengdc 发表于 2015-3-2 20:41 | 显示全部楼层
void function(unsigned long value)
{
      value_0=value&&0x0001;
value_1=value&0x0010;
value_2=value&0x0100;
value_3=value&0x1000;


   /*
    ;
    ;
    */
}
heweibig 发表于 2015-3-2 20:52 | 显示全部楼层
#define get_u8_0(x)  ((U8*)&x)[0]
#define get_u8_1(x)  ((U8*)&x)[1]
#define get_u8_2(x)  ((U8*)&x)[2]
#define get_u8_3(x)  ((U8*)&x)[3]


U32 test = 0x12345678;

U8 a,b,c,d;

a = get_u8_0(test); // 0x12
b = get_u8_1(test); // 0x34
c = get_u8_2(test); // 0x56
d = get_u8_3(test); // 0x78

以上结果针对KEIL C51
 楼主| lizye 发表于 2015-3-2 20:53 | 显示全部楼层

楼上的方法不错,我试试
 楼主| lizye 发表于 2015-3-2 20:53 | 显示全部楼层
先结贴了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
快速回复 在线客服 返回列表 返回顶部