(转)对LOWORD, HIWORD, LOBYTE, HIBYTE的理解
LOWORD()得到一个32bit数的低16bit
HIWORD()得到一个32bit数的高16bit
LOBYTE()得到一个16bit数最低(最右边)那个字节
HIBYTE()得到一个16bit数最高(最左边)那个字节
LOWORD, HIWORD这个以前就很常用到, 比如消息参数 lParam 中存放着鼠标位置. lParam 是 4 字节的, 它的低两位存放 x、高两位存放 y. 但是, 我对LOBYTE, HIBYTE的理解一直不对.
当LOBYTE, HIBYTE应用于32bit数时, 实际上这时应该用于32bit数的后16bit.
#include <iostream> #include <Windows.h> int main() { //// i = 10241035(0x009c440b) int i = 10241035; WORD ih = HIWORD(i); //取最高16位 WORD il = LOWORD(i); //取最低16位 std::cout << std::hex << "i的16进制表示为: "<< i <<std::endl; std::cout << std::hex << "i的高位: "<< ih <<std::endl; std::cout << std::hex << "i的低位: "<< il <<std::endl; WORD bh = HIBYTE(i); //取高8位 WORD bl = LOBYTE(i); //取低8位 std::cout << std::hex << "i的高位: "<< bh << std::endl; std::cout << std::hex << "i的低位: "<< bl << std::endl; return 0; }
运行结果:

转自:http://blog.csdn.net/huang_xw/article/details/8738610
浙公网安备 33010602011771号