【发布时间】:2012-01-08 00:49:24
【问题描述】:
我需要从可能(不)包含多个 CHAR_BIT 位的位集中提取字节。我现在需要将位集中的多少位放入数组中。例如,
位组声明为std::bitset < 40> id;
有一个单独的变量nBitsid 中有多少位可用。现在我想以 CHAR_BIT 的倍数提取这些位。我还需要处理nBits % CHAR_BIT != 0 的情况。我可以把它放到一个 uint8 数组中
【问题讨论】:
-
苛刻...如果您的位数小于 sizeof(unsigned long) 位,则使用
bitset::to_ulong会很简单。事实上,我认为没有简单的解决方案。std::bitset没有data()像std::vector那样的东西(尽管 gcc 版本有一个未记录和实验性的_M_getdata函数,就是这样......)`。由于没有其他东西,您只能单独访问各个位。或者,序列化为字符串或通过流进行,但这些都不是特别有效。