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.