我想使用一个返回uint32_t的函数,该函数应该以little-endian格式包含8位信息。有人可以给我一些C++代码,说明如何从uint32_t类型中将这些位提取为char,boolean或不需要使用Force处理的任何其他类型!因为现在我没有耐心去理解整个忍耐的概念。而且,我越深入地搜索就越显得复杂...

PS。尽管这不是我想要的,但如果有人也可以发布一些代码,说明如何在uint32_t中编码8位(例如8个 bool(boolean) 值),因为我认为这将有助于我理解该概念。

最佳答案

C语言中的一个示例,使用union强制在同一地址空间中同时使用整数和组合位值,并使用位域b0..b7保留单个位值:

#include <stdio.h>

union Bitfields {
    unsigned int as_int;
    struct {
        unsigned char b0:1,b1:1,b2:1,b3:1,
        b4:1,b5:1,b6:1,b7:1;
    } as_bit;
};

int main (void)
{
    Bitfields bitfield;

    bitfield.as_int = 73;

    printf ("%u %u %u\n", bitfield.as_int, bitfield.as_bit.b0, bitfield.as_bit.b1);

    return 0;
}

这样便可以更轻松地对整数值和每个单独的位进行读/写访问。

10-08 01:24