((unsigned char)Buffer[6] << 8) | (unsigned char)Buffer[7]

来源:百度知道 编辑:UC知道 时间:2024/05/25 06:56:01
有人看的懂这是什么意思吗????
unsigned int MsgSize = ((unsigned char)Buffer[6] << 8) | (unsigned char)Buffer[7]
这是用c++ 6.0编写的程序里的代码。

很明显,这是TC里的程序,所以int是16位.
这句代码就是把Buffer[6]和Buffer[7]这两个单字节变量的值,并入到一个16位的变量里.新的变量里,高8位是Buffer[6]的值,低8位是Buffer[7]的值.

至于yangdoing7689说的"Buffer[6]<<8左移了8位就是把整个字节清0了"这句话是错的,C语言里整型变量的运算会默认地全部转成long型再做运算,Buffer[6]<<8的结果实际上是存放在一个32位的变量里,不会清0的.

char类型占一个字节也就是8位,Buffer[6]<<8左移了8位就是把整个字节清0了,这样再位或就可以Buffer[7]的内容存储到Buffer[6]中了.(应该是这样,在看看别的网友回答吧).