gpt4 book ai didi

C++:动态位集

转载 作者:太空狗 更新时间:2023-10-29 23:08:47 26 4
gpt4 key购买 nike

我在初始化我的 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);

编辑2:
有 8 行,每行 32 位。 for 循环嵌套在 while 循环中,该循环访问这 8 行 32 位二进制文​​件中的每一行并将该值分配给 data1,因此 data1 会随着while 循环。
第一次迭代:

data1: 10001001110000001001011100110011  

第二次迭代:

data1: 00110011001110001010001110000000  

第三次迭代:

data1: 00000011100000000000000000000000 

等....

我希望 x 是一个长位集,包含所有这些相互连接的值。

编辑3:
尝试一种方法:

for(int i=0; i<numLines; i++){
d.append(data1);
}
boost::dynamic_bitset<> x(std::string(d));

最佳答案

查看此 boost example了解如何填充 dynamic_bitset

首先,我会将您的循环更改为:

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

所以简单地读入整个字符串(假设它不是太大),扔掉任何空格,这样你就只有一长串 1 和 0 (1001010101101101101110100010...),然后构造你的位集。

关于C++:动态位集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8222033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com