avr39-ripe

packUnpackArry

Apr 15th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. void packArray(void* src, uint8_t* dst, int baseShift)
  8. {
  9.     for (int i = 0, bytes=baseShift; i < 20; i++)
  10.     {
  11.         if (i % 4 == 0 and i >0) bytes +=4;
  12.         dst[bytes++] = ((uint8_t*)src)[i];
  13.     }
  14. }
  15.  
  16. void unpackArray(uint8_t* src, void* dst, int baseShift)
  17. {
  18.     for (int i = 0, bytes=baseShift; i < 20; i++)
  19.     {
  20.         if (i % 4 == 0 and i >0) bytes +=4;
  21.         ((uint8_t*)dst)[i] = src[bytes++];
  22.     }
  23. }
  24.  
  25. int main()
  26. {
  27.     int* arrI = new int[5] { 1,2,3,4,5 };
  28.     float* arrF = new float[5] { 0.01,0.02,0.03,0.04,0.05 };
  29.     uint8_t* arrB = new uint8_t[40];
  30.  
  31.     packArray(arrI,arrB,0);
  32.     packArray(arrF,arrB,4);
  33.  
  34.     delete[] arrI;
  35.     delete[] arrF;
  36.  
  37.     for (int i = 0; i < 10; i++)
  38.     {
  39.         if (i % 2 != 0 and i > 0)
  40.         {
  41.             cout << ((float*)arrB)[i] << endl;
  42.         }
  43.         else
  44.         {
  45.             cout << ((int*)arrB)[i] << endl;
  46.         }
  47.     }
  48.  
  49.     cout << endl;
  50.  
  51.     arrI = new int[5] {0};
  52.     arrF = new float[5] {0};
  53.  
  54.     unpackArray(arrB, arrI, 0);
  55.     unpackArray(arrB, arrF, 4);
  56.     delete[] arrB;
  57.  
  58.     for (int i = 0; i < 10; i++)
  59.     {
  60.         if (i % 2 != 0 and i > 0)
  61.         {
  62.             cout << arrF[i/2] << endl;
  63.         }
  64.         else
  65.         {
  66.             cout << arrI[i/2] << endl;
  67.         }
  68.     }
  69.  
  70.     delete[] arrI;
  71.     delete[] arrF;
  72.  
  73. }
Advertisement
Add Comment
Please, Sign In to add comment