打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
获取WORD的高位字节和低位字节

在WinDef.h中有这样两组宏定义:

#define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff)) #define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))
  • 1
  • 2
  • 1
  • 2

LOBYTE(w)的作用是,获取WORD的低位字节;HIBYTE(w)的作用,获取WORD的高位字节。

DWORD_PTR, 实际上是unsigned long类型的数据类型,但是它在windows操作系统中表示储存的是一个地址的整数形式,也可以储存DWORD的数值。 DWORD,实际上也是unsigned long类型的数据类型,也可以储存一个地址。
DWORD_PTR和DWORD差别

  • DWORDPTR这个类型至少可以确保放得下DWORD并且确保放得下一个指针;
  • DWORD的长度是固定得32位, 而指针的长度是跟硬件、系统、编译器什么的有关系的。 所以如果你是在做32位程序,那么 DWORD_PTR就跟DWORD是一回事。如果你是在做64位程序,那么 DWORD_PTR是64位的, 而DWORD永远是32位。
//main.cpp
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    //DWORD_PTR和DWORD都储存一个地址指针
    int a = 200;
    DWORD_PTR ptr = (DWORD_PTR)&a;
    DWORD dw = (DWORD)&a;
    cout.setf(ios_base::uppercase);
    cout << &a << endl;
    cout << setw(8) << setfill('0') << uppercase << hex << ptr << endl;
    cout << setw(8) << setfill('0') << uppercase << hex << dw << endl;
    cout << nouppercase << dec;
    cout << 'a = ' << *(int *)ptr << endl;
    cout << 'a = ' << *(int *)dw << endl;
    //DWORD_PTR和DWORD都储存一个整型
    int b = 100;
    DWORD_PTR ptrb = b;
    DWORD dwb = b;
    cout << 'b = ' << ptrb << endl;
    cout << 'b = ' << dwb << endl;
    getchar();
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

运行结果:

0032F63C 0032F63C 0032F63C a = 200 a = 200 b = 100 b = 100
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深入理解C/C++数组和指针
深入C\C++的引用,看看编译器对我们隐瞒了什么!(本实验在vs2008中进行)
利用模板元编程实现解循环优化
C++的虚函数表
VC中关于BYTE, WORD, DWORD及其与2, 16进制之间的关系总结
Windows Kernel Exploitation Notes(一)——HEVD Stack O...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服