2012-09-09 80 views
0

我有一個奇怪的問題。我有一個數組,我需要返回到另一個函數。問題是它必須被輸出/轉換爲重鑄數組以存儲矢量

(unsigned)(unsigned char) 

處理數據的函數是char *類型。下面是函數在我轉換數據:

char* Wav::readHeader(ifstream &file) 
{ 
file.read(this->chunkId,         4); 
file.read(reinterpret_cast<char*>(&this->chunkSize),  4); 
file.read(this->format,         4); 

file.read(this->formatId,        4); 
file.read(reinterpret_cast<char*>(&this->formatSize), 4); 
file.read(reinterpret_cast<char*>(&this->format2),  2); 
file.read(reinterpret_cast<char*>(&this->numChannels), 2); 
file.read(reinterpret_cast<char*>(&this->sampleRate), 4); 
file.read(reinterpret_cast<char*>(&this->byteRate),  4); 
file.read(reinterpret_cast<char*>(&this->align),   2); 
file.read(reinterpret_cast<char*>(&this->bitsPerSample), 4); 

char testing[4] = {0}; 
int testingSize = 0; 

while(file.read(testing, 4) && (testing[0] != 'd' || 
           testing[1] != 'a' || 
           testing[2] != 't' || 
           testing[3] != 'a')) 
{ 

    file.read(reinterpret_cast<char*>(&testingSize), 4); 
    file.seekg(testingSize, std::ios_base::cur); 

} 

this->dataId[0] = testing[0]; 
this->dataId[1] = testing[1]; 
this->dataId[2] = testing[2]; 
this->dataId[3] = testing[3]; 



file.read(reinterpret_cast<char*>(&this->dataSize),  4); 

this->data = new char[this->dataSize]; 

file.read(data,       this->dataSize); 

for(unsigned i=0; (i < 20); i++) 
{ 
    //cout << (unsigned)(unsigned char)data[i] << endl; 

} 

return (unsigned)(unsigned char) data; 
} 

而在另一個函數,我有這樣的:

unsigned char* data = this->readHeader(file); 

任何人都可以看到我要去哪裏錯了嗎?

謝謝:)

+1

所有這些都是噪音。帶他們出去。不過,這與模糊的問題無關。 –

回答

1
this->data = new char[this->dataSize]; 

因此,據推測,this->data具有類型char*。好的:這也是函數的返回類型。所以return data似乎是正確的代碼。

+0

是的,我將數據存儲爲字符,但是,然後我需要將其轉換爲(無符號)(無符號字符),否則我得到負數......奇怪 – Phorce

+0

然後,你還沒有顯示解釋問題的代碼。但是'char'可以是一個有符號的類型,並且讀取一個高位設置的字節將產生一個負值。 –

+0

我可以輸出結果到屏幕上,但是,只做(無符號)(無符號字符),但我不想總是寫這個..我必須轉換它嗎? – Phorce