发布网友 发布时间:2022-08-20 06:42
共1个回答
热心网友 时间:2023-11-01 15:08
WORD DWORE BYTE相互转换:
DWORD 4个字节
WORD 2个字节
BYTE 1个字节
1) DWORD--->WORD
[cpp] DWORD dw=0; WORD hW=HIWORD(dw); WORD lW=LOWORD(dw); DWORD dw=0; WORD hW=HIWORD(dw); WORD lW=LOWORD(dw);
2)WORD--->DWORD
[cpp] DWORD dw=0; WORD hW=HIWORD(dw); WORD lW=LOWORD(dw); dw=MAKELONG(lW,hW); DWORD dw=0; WORD hW=HIWORD(dw); WORD lW=LOWORD(dw); dw=MAKELONG(lW,hW);
3) WORD---->BYTE
[cpp] WORD word=0; BYTE hb=HIBYTE(word); BYTE lb=LOBYTE(word); WORD word=0; BYTE hb=HIBYTE(word); BYTE lb=LOBYTE(word);
4)BYTE------>WORD
[cpp] WORD word=0; BYTE hb=HIBYTE(word); BYTE lb=LOBYTE(word); word = MAKEWORD(lb,hb); WORD word=0; BYTE hb=HIBYTE(word); BYTE lb=LOBYTE(word); word = MAKEWORD(lb,hb);
5) ABCD 或L“你好” 这样的四字节字符串 转换为DWORD 进行保存
[cpp] WCHAR str[3]={L你好}; memcpy(&dWord,str,4); WCHAR hChar=(WCHAR)HIWORD(dWord); // 好 WCHAR lChar=(WCHAR)LOWORD(dWord); // 你 WCHAR str[3]={L你好}; memcpy(&dWord,str,4);
综合例子:
[cpp] 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