void WriteLengthHeader(int N, int fix_length, byte fix_prefix, byte len16bit_prefix, byte len32bit_prefix)
{
if (N < fix_length) {
_strm.WriteByte ((byte)(fix_prefix | N));
} else {
byte[] tmp = _tmp;
int header_len;
if (N < 0x10000) {
tmp[0] = len16bit_prefix;
tmp[1] = (byte)(N >> 8);
tmp[2] = (byte)N;
header_len = 3;
} else {
tmp[0] = len32bit_prefix;
tmp[1] = (byte)(N >> 24);
tmp[2] = (byte)(N >> 16);
tmp[3] = (byte)(N >> 8);
tmp[4] = (byte)N;
header_len = 5;
}
_strm.Write (tmp, 0, header_len);
}
}