鱼C论坛

 找回密码
 立即注册
查看: 3588|回复: 0

[技术交流] 对LOWORD, HIWORD, LOBYTE, HIBYTE的理解

[复制链接]
发表于 2017-12-27 08:52:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
LOWORD()得到一个32bit数的低16bit  
HIWORD()得到一个32bit数的高16bit
LOBYTE()得到一个16bit数最低(最右边)那个字节
HIBYTE()得到一个16bit数最高(最左边)那个字节

LOWORD, HIWORD这个以前就很常用到, 比如消息参数 lParam 中存放着鼠标位置. lParam 是 4 字节的, 它的低两位存放 x、高两位存放 y.
需要注意的是:当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位  
  
    // result: 9c  
        printf("i的高位: %x\n",ih);
    // result: 440b          
        printf("i的低位: %x\n",il);
      
    WORD bh = HIBYTE(i);    // 取高8位  
    WORD bl = LOBYTE(i);    // 取低8位  
    // result: 44(是44, 不是0, )  
        printf("i的高位: %x\n",bh);
    // result: b  
        printf("i的低位: %x\n",bl);
  
    return 1;  
}  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-29 03:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表