Bitset被分割成字符

Bitset split into chars

本文关键字:字符 分割 Bitset      更新时间:2023-10-16

我有一个相当大的bitset:

bitset<128*8> bs;

我想要访问8位的组。

  1. bs.to_string ()
  2. 被分割成一个长度为8的vector
  3. 从这些字符串中创建一个新的bitset并调用to_ulong()

有更好的解决方案吗?性能是至关重要的,因为我在程序中多次调用这个方法。

std::bitset>>算子

如果您只想访问并读取该值,可以使用下面的代码。它读取N 8位作为uint8_t:

bitset<128*8> mask(0xFF);
uint8_t x = ((bs >> N * 8) & mask).to_ulong();

您可以这样做以避免创建字符串和一些复制:

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;
}   

但是您可能需要根据您的端序来处理索引