ByteSwap.cpp 730 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // ByteSwap.cpp
  2. #include "StdAfx.h"
  3. #include "ByteSwap.h"
  4. STDMETHODIMP CByteSwap2::Init() { return S_OK; }
  5. STDMETHODIMP_(UInt32) CByteSwap2::Filter(Byte *data, UInt32 size)
  6. {
  7. const UInt32 kStep = 2;
  8. UInt32 i;
  9. for (i = 0; i + kStep <= size; i += kStep)
  10. {
  11. Byte b = data[i];
  12. data[i] = data[i + 1];
  13. data[i + 1] = b;
  14. }
  15. return i;
  16. }
  17. STDMETHODIMP CByteSwap4::Init() { return S_OK; }
  18. STDMETHODIMP_(UInt32) CByteSwap4::Filter(Byte *data, UInt32 size)
  19. {
  20. const UInt32 kStep = 4;
  21. UInt32 i;
  22. for (i = 0; i + kStep <= size; i += kStep)
  23. {
  24. Byte b0 = data[i];
  25. Byte b1 = data[i + 1];
  26. data[i] = data[i + 3];
  27. data[i + 1] = data[i + 2];
  28. data[i + 2] = b1;
  29. data[i + 3] = b0;
  30. }
  31. return i;
  32. }