鱼C论坛

 找回密码
 立即注册
查看: 3209|回复: 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!

  1. #include <iostream>  
  2. #include <Windows.h>  
  3.   
  4. int main()  
  5. {  
  6.     // i = 10241035(0x009c440b)  
  7.     int i = 10241035;  
  8.     WORD ih = HIWORD(i);    // 取高16位  
  9.     WORD il = LOWORD(i);    // 取低16位  
  10.   
  11.     // result: 9c  
  12.         printf("i的高位: %x\n",ih);
  13.     // result: 440b         
  14.         printf("i的低位: %x\n",il);
  15.       
  16.     WORD bh = HIBYTE(i);    // 取高8位  
  17.     WORD bl = LOBYTE(i);    // 取低8位  
  18.     // result: 44(是44, 不是0, )  
  19.         printf("i的高位: %x\n",bh);
  20.     // result: b  
  21.         printf("i的低位: %x\n",bl);
  22.   
  23.     return 1;  
  24. }  
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 18:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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