簡體   English   中英

C ++:dynamic_bitset

[英]C++: dynamic_bitset

我在初始化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的assignes中的每一行,因此data1隨着while循環的每次迭代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));

有關如何填充dynamic_bitset請參閱此增強示例

首先,我會將你的循環改為:

for (unsigned i = 0; i < data1.length(); i++) {
    x[i] = data1[i];
}

回答問題編輯:

您可以使用字符串構造dynamic_bitset

boost::dynamic_bitset<> x(std::string(data1));

所以只需讀取整個字符串(假設它不是太大 ),扔掉任何空格,這樣你只需要一個1s和0s的長字符串(1001010101101101101110100010 ......),然后構建你的bitset。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM