0

私はこのようないくつかのデータを持っています:
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;
}
4

1 に答える 1