EncodeSize.cpp
上传用户:szopptop
上传日期:2013-04-23
资源大小:1047k
文件大小:1k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include "..DefProtocol.h"
  4. int WINAPI fnEncode6BitBufA(unsigned char *pszSrc, char *pszDest, int nSrcLen, int nDestLen)
  5. {
  6. int             nDestPos    = 0;
  7. int             nRestCount  = 0;
  8. unsigned char   chMade = 0, chRest = 0;
  9. for (int i = 0; i < nSrcLen; i++)
  10. {
  11. if (nDestPos >= nDestLen) break;
  12. chMade = ((chRest | (pszSrc[i] >> (2 + nRestCount))) & 0x3f);
  13. chRest = (((pszSrc[i] << (8 - (2 + nRestCount))) >> 2) & 0x3f);
  14. nRestCount += 2;
  15. if (nRestCount < 6)
  16. pszDest[nDestPos++] = chMade + 0x3c;
  17. else
  18. {
  19. if (nDestPos < nDestLen - 1)
  20. {
  21. pszDest[nDestPos++] = chMade + 0x3c;
  22. pszDest[nDestPos++] = chRest + 0x3c;
  23. }
  24. else
  25. pszDest[nDestPos++] = chMade + 0x3c;
  26. nRestCount  = 0;
  27. chRest      = 0;
  28. }
  29. }
  30. if (nRestCount > 0)
  31. pszDest[nDestPos++] = chRest + 0x3c;
  32. //  pszDest[nDestPos] = '';
  33. return nDestPos;
  34. }
  35. void main()
  36. {
  37. //  _TUSERITEMRCD   t;
  38. //    _TGENITEMRCD  t;
  39. //    _THUMANMAGICRCD t;        
  40. _THUMANRCD  t;  
  41. //  _TCHARDESC t;    
  42. //    _THUMANMAGICRCD t;
  43. char        szEncode[1024];
  44. int nPos = fnEncode6BitBufA((unsigned char *)&t, szEncode, sizeof(t), sizeof(szEncode));
  45. printf("%dn", nPos);
  46. }