我想從Qt中的音頻文件中讀取16位整數採樣值。如何從QFile讀取帶符號的16位整數?
char tempbytes[3]; ///
int sampleposition;
int sample;
QFile file(sourcepath);
if (! file.open(QIODevice::ReadOnly | QIODevice::Text)) return;
sampleposition = 120
file.seek(sampleposition);
file.read(tempbytes, 2);
現在我有一個char數組,但我想將它轉換爲16位有符號整數值。波形文件中的字節順序是littleendian。
我已經嘗試過:
sample = qFromLittleEndian<qint16>((uchar*)tempbytes);
這個工作對一些樣品,但有些是完全錯誤的價值觀誤解。我比較大膽的時間信號的情節。
有沒有更好的方法?
你得到了錯誤的值的原因我們,因爲表達式'(UCHAR *)tempbytes'返回tempbytes'的'內存地址。你得到的價值是地址,而不是音頻樣本。 – RobbieE