我正在使用来自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