假设我有:
myArray[7] = {TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE}
uint8 mybitfield;
用0=FALSE
,将这些值“推”到uint8位字段的最有效方法是1=TRUE
因此,mybitfield表示为:
[1,0,0,1,1,0,0,0]
(最低有效位将不被考虑,并且将始终为0)。
谢谢!
如前所述,您必须逐个遍历位,例如:
int myArray[7] = {TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE};
uint8_t bitfield = 0;
for (int i = 0; i < 7; ++i) {
bitfield |= myArray[i] ? 1 : 0;
bitfield <<= 1;
}
这导致0b10011000
,即,数组首先具有最高有效位,而对于最低有效位具有隐式零。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句