private static IEnumerable<byte> GetLength(int length)
{
if (length > 127)
{
var size = 1;
var val = length;
while ((val >>= 8) != 0)
size++;
var data = new byte[size];
data[0] = (byte)(size | 0x80);
for (int i = (size - 1) * 8, j = 1; i >= 0; i -= 8, j++)
{
data[j] = (byte)(length >> i);
}
return data;
}
return new[] {(byte) length};
}