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
|