分享

DWORD WORD BYTE 相互转换

 herowuking 2015-06-14

 DWORD WORD BYTE 相互转换

  

  DWORD  4个字节

  WORD     2个字节

  BYTE       1个字节

 

1) DWORD--->WORD

  1. DWORD dw=0;  
  2.   
  3.   
  4. WORD hW=HIWORD(dw);  
  5. WORD lW=LOWORD(lw);  


2)WORD--->DWORD

  1. DWORD dw=0;  
  2.   
  3.   
  4. WORD hW=HIWORD(dw);  
  5. WORD lW=LOWORD(lw);  
  6.   
  7.   
  8. dw=MAKELONG(lw,hw);  


3) WORD---->BYTE

  1. WORD word=0;  
  2. BYTE hb=HIBYTE(word);  
  3. BYTE lb=LOBYTE(word);  


4)BYTE------>WORD

  1. WORD word=0;  
  2. BYTE hb=HIBYTE(word);  
  3. BYTE lb=LOBYTE(word);  
  4.   
  5. word = MAKEWORD(lb,hb);  


5) "ABCD" 或L“你好” 这样的四字节字符串 转换为DWORD 进行保存

  1. WCHAR str[3]={L"你好"};  
  2.   
  3. memcpy(&dWord,str,4);  
  4.   
  5.   
  6. WCHAR hChar=(WCHAR)HIWORD(dWord); // 好  
  7. WCHAR lChar=(WCHAR)LOWORD(dWord); // 你  


综合例子:

  1.     char  *name="abcd";  
  2.     DWORD dWord=0;  
  3.   
  4.   
  5.     WORD hw=HIWORD(dWord);  
  6.     WORD lw=LOWORD(dWord);  
  7.   
  8.     BYTE hhb=HIBYTE(hw);  
  9.     BYTE lhb=LOBYTE(hw);  
  10.   
  11.     BYTE hlb=HIBYTE(lw);  
  12.     BYTE llb=LOBYTE(lw);  
  13.   
  14.   
  15.   
  16.     hhb   =   name[0];   
  17.     hlb   =   name[1];   
  18.     lhb   =   name[2];   
  19.     llb   =   name[3];   
  20.   
  21.     hw   =   MAKEWORD(hlb,   hhb);  //ba  
  22.     lw   =   MAKEWORD(llb,   lhb);  //dc  
  23.   
  24.     //dWord 为 "dcba"  
  25.     dWord   =   MAKELONG(lw,   hw); //dcba  
  26.   
  27.     hw=HIWORD(dWord); // ba  
  28.     lw=LOWORD(dWord); // dc  
  29.   
  30.     hhb=HIBYTE(hw);  // a  
  31.     lhb=LOBYTE(hw);  // b  
  32.   
  33.     lhb=HIBYTE(lw);  // c  
  34.     llb=LOBYTE(lw);  // d  
  35.   
  36.   
  37.   
  38. ///////////////////////  对比程序  ///////////////////////////////////////////////////  
  39.   
  40.     // dWord 为 "abcd"  
  41.     memcpy(&dWord,name,4);  
  42.   
  43.     hw=HIWORD(dWord); // cd  
  44.     lw=LOWORD(dWord); // ab  
  45.   
  46.     hhb=HIBYTE(hw);   // d  
  47.     lhb=LOBYTE(hw);   // c  
  48.   
  49.     lhb=HIBYTE(lw);   // b  
  50.     llb=LOBYTE(lw);   // a  



 

参考资料:

http://topic.csdn.net/t/20040609/10/3076147.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多