У меня проблемы с инициализацией моего dynamic_bitset
. У меня есть этот код:
for(int j=(data1.length()-1); j>=0; j--){
x[j] = data1[j];
}
Где data1
- 32-разрядное двоичное число, считываемое из файла.
Когда я вывожу значения для data1[j]
, он выводит правильные значения, которые мне нужно присвоить x, но когда я вывожу x (после предполагаемой инициализации), x - это все единицы.
Что я делаю не так?
РЕДАКТИРОВАТЬ: я пытаюсь распаковать код. Сжатый код дается в строках длиной 32 бита. Я хочу поместить все в одну структуру для легкого доступа.
Мой код для инициализации x:
int size = numLines * 32; //numLines is the number of lines of 32 bits
boost::dynamic_bitset<> x(size);
EDIT2:
Есть 8 строк по 32 бита каждая. Цикл for
вложен в цикл while
, который обращается к каждой из этих 8 строк 32-разрядного двоичного файла и присваивает это значение данным1, поэтому данные1 меняются при каждой итерации цикла while
.
Первая итерация:
data1: 10001001110000001001011100110011
Вторая итерация:
data1: 00110011001110001010001110000000
Третья итерация:
data1: 00000011100000000000000000000000
и т.д ....
Я хочу, чтобы x
был длинным набором битов, содержащим все эти значения, соединенные друг с другом.
EDIT3:
Попытка одного метода:
for(int i=0; i<numLines; i++){
d.append(data1);
}
boost::dynamic_bitset<> x(std::string(d));