我有一些这样的数据:
0代表数据
x代表空
0000000000xxxxxx
10bit............6bit浪费
我想用下一个数据压缩它以节省空间。
我使用位移来做到这一点。
| 8位 | 2位 6位 | 4Bit 4Bit | 6位 2位 | 8位 |
到目前为止,我有:
#define mask1 (char)((Data & 0xFF00) >> 8); //apply mask
#define mask2 (char)((Data & 0x00C0) >> 6);
#define mask3 (char)((Data & 0xFC00) >> 10);
#define mask4 (char)((Data & 0x03C0) >> 6);
#define mask5 (char)((Data & 0xF000) >> 12);
#define mask6 (char)((Data & 0x0FC0) >> 6);
#define mask7 (char)((Data & 0xC000) >> 14);
#define mask8 (char)((Data & 0x3FC0) >> 6);
switch (counter) { //repeat after 4 times
case 0:
array[i++] = mask1;
array[i] = mask2;
counter++;
break;
case 1:
array[i++]| = (mask3);
array[i] = (mask4);
counter++;
break;
case 2:
array[i++]| = mask5;
array[i] = mask6;
counter++;
break;
case 3:
array[i++]| = mask7;
array[i++] = mask8;
counter=0;
break;
}