我在初始化dynamic_bitset
时遇到问题。我有这段代码:
for(int j=(data1.length()-1); j>=0; j--){
x[j] = data1[j];
}
其中data1
是从文件读入的32位二进制数。
当我输出data1[j]
的值时,它会输出我需要分配给x的正确值,但是当我输出x时(假设初始化之后),x都是1。
我做错了什么?
编辑:我正在尝试解压缩代码。压缩代码以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位二进制和值为data1的分配中的每一行,因此data1随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));
答案 0 :(得分:1)
有关如何填充dynamic_bitset
的信息,请参阅此boost example。
首先,我会将你的循环改为:
for (unsigned i = 0; i < data1.length(); i++) {
x[i] = data1[i];
}
对问题编辑的回应:
你可以construct a dynamic_bitset using a string:
boost::dynamic_bitset<> x(std::string(data1));
所以只需读取整个字符串(假设它不是太大),扔掉任何空格,这样你只需要一个1s和0s的长字符串(1001010101101101101110100010 ...)然后构建你的bitset。