在 Win32 中,DWORD是 32 位无符号整数。在其他情况下,它可能意味着其他含义。
假设 Win32 定义(以及其他 Win32 typedef):
BYTE lsb = 0x11 :
BYTE next_lsb = 0x22 :
BYTE next_msb = 0x33 :
BYTE msb = 0x44 :
DWORD dword_from_bytes = (msb << 24) | (next_msb << 16) | (next_lsb << 8) | lsb ;
Run Code Online (Sandbox Code Playgroud)
dword_from_bytes就会有价值0x44332211。
相似地:
WORD lsw = 0x1111 :
WORD msw = 0x2222 :
DWORD dword_from_words = (msw << 16) | lsw ;
Run Code Online (Sandbox Code Playgroud)
dword_from_words就会有价值0x22221111。
dword_from_bytes例如,要提取第三个字节:
next_msb = (dword_from_bytes >> 16) & 0xff ;
Run Code Online (Sandbox Code Playgroud)
尽管& 0xff在给定 的类型的情况下, 不是严格必需的next_msb,但如果接收器的类型大于 8 位,它将屏蔽 MSB 位。