在VC++中一个32位整数取高16位字节和低16位字节宏
发布时间:2016年11月12日 作者:未知 查看次数:1290
在VC++中一个32位整数取高16位字节和低16位字节宏。 1、LOWORD()和HIWORD()取高16位字节和低16位字节。 int nLow = LOWORD(lParam); int nHig = HIWORD(lParam); 2、利用MAKELONG()宏将两个16位数合并成32位数。 WORD nLow = 2; WORD nHig = 1; int nRet = MAKELONG(nLow,nHig); 则nRet=65538,即0x10002 注: #define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff)) #define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16)) 这是windef.h头文件中对宏LOWORD和HIWORD的定义。 作用分别是取出无符号长整型参数的高16位和低16位。LOWORD返回低16位,HIWORD返回高16位。 因为一个长整型占32位,其中高低16位的值可能有不同的意义,需要通过这2个宏分别取出来使用。取出来的结果是一个无符号短整型的值。 其原理正如定义那样,取低16位的宏LOWORD使用按位与操作符与数字0xffff运算,而数字0xffff是一个低16位全为1的数字,那么对其位与操作可以得到参数的低16位。 而取高16位的宏HIWORD则更简单,只需将参数右移16位,剩下的就是原高16位的值了。
|
|
|