具有低/高字和低/高字节的 DWORD 变量
在 C 中,我们如何读取和创建具有低位和高位字以及低位和高位字节的 DWORD
变量?
How in C can we read and make DWORD
variables with a low and high word and low and high byte?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
WinAPI 提供了用于操作这些类型的宏,例如:
HIWORD
LOWORD
MAKELPARAM
WinAPI provides macros for the manipulations of these types, such as:
HIWORD
LOWORD
MAKELPARAM
在 Win32 中,DWORD 是 32 位无符号整数。在其他情况下,它可能意味着其他含义。
假设 Win32 定义(以及其他 Win32 typedef):
dword_from_bytes
的值为0x44332211
。同样:
dword_from_words
的值为0x22221111
。例如,要从 dword_from_bytes 中提取第三个字节:
尽管
&考虑到
在这种情况下并不是绝对必要的,但如果接收器的类型大于 8 位,它将屏蔽 msb 位。next_msb
的类型,0xffIn Win32 a DWORD is a 32 bit unsigned integer. In other contexts it could possibly mean something else.
Assuminng the Win32 definition (and other Win32 typedefs):
dword_from_bytes
will have the value0x44332211
.Similarly:
dword_from_words
will have the value0x22221111
.To extract say the third byte from
dword_from_bytes
for example:although the
& 0xff
is not strictly necessary in this case given the type ofnext_msb
, but if the type of the receiver were larger than 8 bits, it will mask off the msb bits.我更喜欢使用结构体和联合体的组合。
输出:
I prefer to use a combination of structs and unions.
Output: