私はこのようないくつかのデータを持っています:
0はデータを表します
xは空の
0000000000xxxxxxを表します10
ビット............6ビットが無駄になります
スペースを節約するために、次のデータで圧縮したいと思います。
私はこれを行うためにビットシフトを使用します。
| 8ビット| 2ビット6ビット| 4ビット4ビット| 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;
}