, , , . , 6- . , . C, , , ++ (). , 4 6- 24 3 .
const int nbr_elements = 1000;
struct X
{
char[ 3*((nbr_elements-1)/4) + 3 ] storage;
int get( int idx );
};
int X::get( int idx )
{
int dat;
int offset = 3*(idx/4);
char a = storage[offset++];
char b = storage[offset++];
char c = storage[offset];
switch( idx%4)
{
case 0: dat = (a>>2)&0x3f; break;
case 1: dat = ((a<<4)&0x30) + ((b>>4)&0x0f); break;
case 2: dat = ((b<<2)&0x3c) + ((c>>6)&0x03); break;
case 3: dat = c&0x3f; break;
}
return dat;
}
companion put() .