发新帖我要提问
12
返回列表
打印

用移位还是联合体

[复制链接]
楼主: lizye
手机看帖
扫描二维码
随时随地手机跟帖
21
zhanghqi| | 2015-3-2 20:40 | 只看该作者 回帖奖励 |倒序浏览
是啊,Tobyte 或 byte 没有实际的意义,我是想能不能用两个关键字表示其中的单个字节,用一个关键字表示整体,形式如:
Value_2  Value.2  Value(2)  Value[2]  ----引用单个字节
value ----引用整体

使用特权

评论回复
22
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
不就可以满足要求了嘛。

使用特权

评论回复
23
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;


   /*
    ;
    ;
    */
}

使用特权

评论回复
24
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

使用特权

评论回复
25
lizye|  楼主 | 2015-3-2 20:53 | 只看该作者

楼上的方法不错,我试试

使用特权

评论回复
26
lizye|  楼主 | 2015-3-2 20:53 | 只看该作者
先结贴了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则