Я пытаюсь преобразовать любой объект в std::vector<bool>
(представляющий биты, установленные в памяти, чтобы обработать объект).
Итак, для uint16_t(0x1234)
я хочу получить std::vector<bool>
0001001000110100
, И для float(3.14f)
, то есть 0x4048F5C3
в памяти, я хочу получить std::vector<bool>
01000000010010001111010111000011
.
На основании этого поста , я пробовал это:
template<typename T>
std::vector<bool> val2Array(T val)
{
size_t count = sizeof(T)*CHAR_BIT;
std::vector<bool> result( count );
for (size_t i = 0; i < count; i++)
{
T temp = 1 << (count - i - 1);
if ( val & temp )
result[i] = true;
else
result[i] = false;
}
return result;
}
Это работает нормально, но я получаю ошибку, когда T
не является числовым (float
), из-за оператора <<
.
Есть ли какой-либо другой способ конвертировать любой значение до std::vector<bool>
? Я нашел много кода, показывающего, как преобразовать std::vector<bool>
в значение, но не наоборот.