取uint32_t的每一位
- (void)viewDidLoad {
[super viewDidLoad];
union{
uint32_t num;
struct uint32data da;
}val;
val.num = 30; // 00 01 11 10
NSLog(@"%d, %d , %d , %d", val.da.a, val.da.b, val.da.c, val.da.d); // 第一种
uint32_t data = 30;
struct uint32data da = *(struct uint32data *)&data; // 第二种
NSLog(@"%d, %d , %d , %d", da.a, da.b, da.c, da.d);
uint32_t dat = 30;
NSLog(@"%u, %u , %u , %u", dat&3, dat>>2&3, dat>>4&3, dat>>6&3); // 第三种
}
struct uint32data {
uint32_t a:2;
uint32_t b:2;
uint32_t c:2;
uint32_t num;
struct uint32data da;
}val;
val.num = 30; // 00 01 11 10
NSLog(@"%d, %d , %d , %d", val.da.a, val.da.b, val.da.c, val.da.d); // 第一种
uint32_t data = 30;
struct uint32data da = *(struct uint32data *)&data; // 第二种
NSLog(@"%d, %d , %d , %d", da.a, da.b, da.c, da.d);
uint32_t dat = 30;
NSLog(@"%u, %u , %u , %u", dat&3, dat>>2&3, dat>>4&3, dat>>6&3); // 第三种
}
struct uint32data {
uint32_t a:2;
uint32_t b:2;
uint32_t c:2;
uint32_t d:2;
};