我有一个很大的位置:
bitset<128*8> bs;
我想访问8位组。 到目前为止的情况:
有更好的解决方案吗?性能至关重要,因为我在我的程序中多次调用此方法。
答案 0 :(得分:2)
std::bitset
有运营商>>
。
如果您只想访问该值并阅读它,则可以使用以下代码。它将N th 8位读为uint8_t
:
bitset<128*8> mask(0xFF);
uint8_t x = ((bs >> N * 8) & mask).to_ulong();
答案 1 :(得分:1)
你可以这样做,以避免创建字符串和一些复制:
for (uint32_t i = 0; i < bs.size(); i+=8) {
uint32_t uval = 0;
for (uint32_t j = 0; j < 8; j++) {
uval = (uval << 1) + bs[i + 7 - j];
}
std::cout << uval << std::endl;
}
但您可能需要根据您的字节顺序处理索引