private void EncodeBits(Stream stream, BitEncoder bitEncoder, int suffix) { bitEncoder.Add(suffix); bitEncoder.Add(this.endCode); bitEncoder.End(); if (bitEncoder.Length > 255) { var leftBuffer = new byte[bitEncoder.Length - 255]; bitEncoder.CopyTo(255, leftBuffer, 0, leftBuffer.Length); bitEncoder.Clear(); bitEncoder.AddRange(leftBuffer); stream.WriteByte((byte) leftBuffer.Length); stream.WriteBytes(leftBuffer); } else { stream.WriteByte((byte) (bitEncoder.Length)); stream.WriteBytes(bitEncoder.ToArray()); bitEncoder.Clear(); } }