Advertisement
Guest User

Untitled

a guest
Aug 5th, 2011
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.46 KB | None | 0 0
  1. //thanks Rick
  2. int DNF_ReadEncodedMem(RichMemFileBase *f)
  3. {
  4. BYTE op;
  5. f->Read(&op, sizeof(BYTE));
  6.  
  7. DWORD value = (op & 0x3F);
  8.  
  9. if ((op & 0x40) != 0)
  10. {
  11. int shift = 6;
  12. BYTE extra;
  13. do
  14. {
  15. if (shift > 27)
  16. {
  17. return -1;
  18. }
  19.  
  20. f->Read(&extra, sizeof(BYTE));
  21. value |= (DWORD)(extra & 0x7F) << shift;
  22. shift += 7;
  23. }
  24. while ((extra & 0x80) != 0);
  25. }
  26.  
  27. if ((op & 0x80) != 0)
  28. {
  29. return -(int)value;
  30. }
  31.  
  32. return (int)value;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement