Похоже, вы хотите представить charArray
как набор битов. Простое l oop и пара битовых операций выполнят эту работу:
using Bitset = std::bitset<array_size * 8>;
Bitset bitset;
for (auto i = array_size; i > 0; --i) {
bitset <<= 8;
bitset |= Bitset(static_cast<unsigned char>(charArray[i - 1]));
}
return bitset;
В зависимости от значения charArray
, l oop также можно переписать с помощью итераторов:
using Bitset = std::bitset<array_size * 8>;
Bitset bitset;
for (auto it = std::rbegin(charArray); it != std::rend(charArray); ++it) {
bitset <<= 8;
bitset |= Bitset(static_cast<unsigned char>(*it));
}
return bitset;
Наконец, если вы действительно хотите использовать какой-нибудь стандартный библиотечный алгоритм, вы можете использовать std::accumulate
:
using Bitset = std::bitset<array_size * 8>;
return std::accumulate(std::rbegin(charArray), std::rend(charArray), Bitset{},
[](Bitset bs, auto ch) { return (bs << 8) |
std::bitset<array_size * 8>(static_cast<unsigned char>(ch));
});
Демо