我正在使用來自Kinect傳感器的深度數據,它是一個16位無符號整數數組。爲了擺脫一些cruft信息,我需要將一個像素的內容左移三位。我收到的結果太小了,太奇怪了(例如,打印的數字應該是〜400,因爲它是以毫米爲單位的距離,但我得到的數字是0-30)。Qt QByteArrays + 16位無符號整數
castedBuffer = (uchar*)internalFrameArray->constData();
std::cout << (int)((unsigned short int)castedBuffer[307000]>>3) << "\n";
我很努力,因爲我得到的數據列於(UCHAR *)格式(這是8位),我的理論是,移位只被應用到16位數字的一半。
我有點失落!
'castedBuffer [307000]'是一個'uchar',將它轉換爲更寬的類型將不會讀取陣列中的更多數據。 – Mat