这个pData [1 + 2*i] << 8 | pData [2 + 2*i] C++语法是什么意思?

use*_*265 2 c++ bitwise-operators visual-c++

什么是包含BYTE数据的数组pData[1+2*i]<<8|pData[2+2*i]在哪里pData[ ]?我在main函数中有以下功能

{
..........
....
BYTE Receivebuff[2048];
..
ReceiveWavePacket(&Receivebuff[i], nNextStep);
....
...
..
}
Run Code Online (Sandbox Code Playgroud)

其中Receivebuff是BYTE类型的数组.

ReceiveWavePacket(BYTE * pData, UINT nSize)
{
 CString strTest;
 for(int i = 0 ; i < 60 ; i++)
 {
  strTest.Format("%d\n",(USHORT)(pData[1+2*i]<<8|pData[2+2*i]));
  m_edStatData.SetWindowTextA(strTest);
          }
}
Run Code Online (Sandbox Code Playgroud)

我想知道的意思" ,(USHORT)(pData[1+2*i]<<8|pData[2+2*i]).

任何人都可以帮帮我吗?

tem*_*def 12

这似乎是用于从两个八位值合成16位值的代码.如果你注意,那么数学就有了表格

(a << 8) | b
Run Code Online (Sandbox Code Playgroud)

适用于a和b.第一部分(a << 8)取a中的8位并将它们向上移动8个位置,得到16位值,其前8位是来自a的位,其后8位全部为0.在这个新值和b的值之间应用按位OR运算符会创建一个新的16位值,其前8位是a的位(因为OR步骤的零扩展b使这些位保持不变)并且其低8位是b的位,因为OR的零位与b的位产生b.