void gcr_conv4(byte[] from, byte[] to, int f, int t)
{
UInt16 g;
g = (UInt16)((gcr_table[from[f] >> 4] << 5) | gcr_table[from[f] & 15]);
to[t++] = (byte)(g >> 2);
to[t] = (byte)((g << 6) & 0xc0);
f++;
g = (UInt16)((gcr_table[from[f] >> 4] << 5) | gcr_table[from[f] & 15]);
to[t++] |= (byte)((g >> 4) & 0x3f);
to[t] = (byte)((g << 4) & 0xf0);
f++;
g = (UInt16)((gcr_table[from[f] >> 4] << 5) | gcr_table[from[f] & 15]);
to[t++] |= (byte)((g >> 6) & 0x0f);
to[t] = (byte)((g << 2) & 0xfc);
f++;
g = (UInt16)((gcr_table[from[f] >> 4] << 5) | gcr_table[from[f] & 15]);
to[t++] |= (byte)((g >> 8) & 0x03);
to[t] = (byte)g;
}