我在一些C ++代码中看到的内容如下:
// Header
struct SomeStruct {
uint32_t nibble1:4, bitField1:1, bitField2:1, bitField3:1, bitField4:1,
padding:11, field5Bits:5, byteField:8;
};
这叫什么?在问这里之前我通常喜欢谷歌,但我不知道甚至输入什么。我希望在字节顺序时能理解这一点 - 有点顺序要考虑还是字节顺序?另外,每个字段的类型是什么 - bitFieldX应该是bool,而field5Bits应该是uint8_t。至少这就是我的想法。
感谢。
答案 0 :(得分:6)
答案 1 :(得分:1)
通常,从较大的二进制整数表示中选择几个位的术语是 masking 。
答案 2 :(得分:1)
您发布的内容是打包结构。结构中的元素被称为位域,就像其他人发布的那样。这些通常用于表示通信协议结构,其中协议指定小于一个字节的字段,或者不与通常发生的字节,半字或字对齐对齐。
由于只列出了一种类型,因此结构的每个成员都是相同的类型uint_32。
Endianess对于作为数据类型大于1个字节的一部分的anthing非常重要。