我想使用一个返回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;
}
这样便可以更轻松地对整数值和每个单独的位进行读/写访问。