取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 d:2;
};
原文地址:https://www.cnblogs.com/whqios/p/5583749.html