2013-11-04 55 views
0

我基本上想將我正在讀取的這些數據傳遞給不同的函數並最終繪製它。轉換和傳遞數組

該數組包含'1'和'0'的32位字,然後我想將這些單獨位添加到一起以查看數據尖峯的位置。換句話說,如果我將「0100」添加到「0110」,我會得到「0210」 - 這可能更容易用單獨的容器和繪圖進行。

目前,我只是得到垃圾。

void binary(int convert, int* dat) { 
    bitset<32> bits(convert); 
    //cout << bits.to_string() << endl; 
    char data[32]; 

    for(unsigned i = 0; i < 32; ++i) { 
    data[i] = bits[i]; 
    } 
    for(unsigned i = 32; i; --i) { 
    dat[i] = (int(data[i-1]))+dat[i]; 
    } 
} 


void SerDi() { 
    int dat[32]; 
    cout << " Reading data from memory..." << endl; 
    ValVector< uint32_t> data=hw.getNode("SerDi.RAM").readBlock(8); 
    hw.dispatch(); 
    cout << data[0]<<endl; 
    cout << data[1]<<endl; 
    for (unsigned i = 2; i < 7; i++) { 
    binary(data[i], dat); 
    } 
    cout << dat[7] << endl; 
    graph(dat); //passes the array to a place where I can plot the graph 
} 
+1

「*換句話說,如果我將」0100「添加到」0110「,我會得到」0210「*」當然,只要您使用二進制數字(基數2)進行累加,這將永遠不會工作。你需要一個「矢量」或類似的積累。 –

+0

好吧,我嘗試了一個「矢量 dat」,但我運行它時出現了分割錯誤。 – fiz

+0

這聽起來像是一個完全不同的問題。 –

回答

1

你有

int dat[32]; 

但在轉換你有i = 32dat[i]將訪問一些數組的外面不好的事情會發生。

此外,這還沒有初始化。在某處添加一個memset /循環,以使dat開始0

+0

確實 - 謝謝。仍然沒有解決我的代碼,雖然=/ – fiz

+0

flz @如果你仍然有一個錯誤,請嘗試調試。將循環限制爲0,1,2迭代打印所有內容並驗證其是否按預期工作。 – Sorin