600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 获取WORD的高位字节和低位字节

获取WORD的高位字节和低位字节

时间:2023-09-19 19:10:12

相关推荐

获取WORD的高位字节和低位字节

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

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

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;}

运行结果:

0032F63C0032F63C0032F63Ca = 200a = 200b = 100b = 100

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。