DWORD WORD BYTE 相互转换
DWORD 4个字节
WORD 2个字节
BYTE 1个字节
1) DWORD--->WORD
DWORD dw=0;
WORD hW=HIWORD(dw);
WORD lW=LOWORD(lw);
2)WORD--->DWORD
DWORD dw=0;
WORD hW=HIWORD(dw);
WORD lW=LOWORD(lw);
dw=MAKELONG(lw,hw);
3) WORD---->BYTE
WORD word=0;
BYTE hb=HIBYTE(word);
BYTE lb=LOBYTE(word);
4)BYTE------>WORD
WORD word=0;
BYTE hb=HIBYTE(word);
BYTE lb=LOBYTE(word);
word = MAKEWORD(lb,hb);
5) "ABCD" 或L“你好” 这样的四字节字符串 转换为DWORD 进行保存
WCHAR str[3]={L"你好"};
memcpy(&dWord,str,4);
WCHAR hChar=(WCHAR)HIWORD(dWord); // 好
WCHAR lChar=(WCHAR)LOWORD(dWord); // 你
综合例子:
char *name="abcd";
DWORD dWord=0;
WORD hw=HIWORD(dWord);
WORD lw=LOWORD(dWord);
BYTE hhb=HIBYTE(hw);
BYTE lhb=LOBYTE(hw);
BYTE hlb=HIBYTE(lw);
BYTE llb=LOBYTE(lw);
hhb = name[0];
hlb = name[1];
lhb = name[2];
llb = name[3];
hw = MAKEWORD(hlb, hhb); //ba
lw = MAKEWORD(llb, lhb); //dc
//dWord 为 "dcba"
dWord = MAKELONG(lw, hw); //dcba
hw=HIWORD(dWord); // ba
lw=LOWORD(dWord); // dc
hhb=HIBYTE(hw); // a
lhb=LOBYTE(hw); // b
lhb=HIBYTE(lw); // c
llb=LOBYTE(lw); // d
/// 对比程序 ///
// dWord 为 "abcd"
memcpy(&dWord,name,4);
hw=HIWORD(dWord); // cd
lw=LOWORD(dWord); // ab
hhb=HIBYTE(hw); // d
lhb=LOBYTE(hw); // c
lhb=HIBYTE(lw); // b
llb=LOBYTE(lw); // a
参考资料:
http://topic.csdn.net/t/20040609/10/3076147.html